From 6a10d3057753c891d136d3da163f2ca4b5fdba30 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Fri, 17 Feb 2023 09:44:26 +0800 Subject: [PATCH 01/31] =?UTF-8?q?=E5=A2=9E=E5=8A=A0developer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cf939a15..3c3cb098 100644 --- a/pom.xml +++ b/pom.xml @@ -67,7 +67,12 @@ 1.8 1.8 - + + + noah-guozhiqi + guozhiqi21@163.com + + -- Gitee From 825c912daa1d41cb52cb80e0f5aa7a2cb543b88d Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Fri, 17 Feb 2023 09:55:21 +0800 Subject: [PATCH 02/31] update repository --- pom.xml | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 3c3cb098..cb36978f 100644 --- a/pom.xml +++ b/pom.xml @@ -67,12 +67,27 @@ 1.8 1.8 - - - noah-guozhiqi - guozhiqi21@163.com - - + + + noah-guozhiqi + guozhiqi21@163.com + + + + + Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0 + repo + + + + Inspur Group + https://gitee.com/ubml/ui-model + + + gitee + https://gitee.com/ubml/ui-model/issues + -- Gitee From 4b1343e1363769494d5644efa5ae7fbee0d33d82 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Mon, 20 Feb 2023 15:04:20 +0800 Subject: [PATCH 03/31] =?UTF-8?q?npm=20=E8=87=AA=E5=8A=A8=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=EF=BC=8Cmac=E8=B0=83=E6=95=B4=E4=B8=BA=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E5=A4=96=E7=BD=AEnodejs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inspur/edp/web/common/io/NodejsFunctionUtility.java | 5 +++-- .../edp/web/common/utility/OperatingSystemUtility.java | 8 ++++++++ .../edp/web/designschema/generator/FieldBuilder.java | 1 - .../debuguri/FormMetadataDebugUriWithMobile.java | 2 +- .../core/cacheclean/NpmCacheCleanCommandExecutor.java | 2 +- 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/web-common/src/main/java/com/inspur/edp/web/common/io/NodejsFunctionUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/io/NodejsFunctionUtility.java index 2df73c98..cbd29a04 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/io/NodejsFunctionUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/io/NodejsFunctionUtility.java @@ -56,7 +56,8 @@ public class NodejsFunctionUtility { String nodeJsPath = getNodeJsPathInServer(); if (OperatingSystemUtility.isWindows()) { nodeJsPath = FileUtility.combine(nodeJsPath, "amd64-win"); - } else { + } else if (OperatingSystemUtility.isLinux() && !OperatingSystemUtility.isMac()) { + // 由于内置的无法支持mac 因此mac采用外置的形式 if (nodeJsCommandEnum == NodeJsCommandEnum.Node) { nodeJsPath = FileUtility.combine(nodeJsPath, "x86_64-linux", "bin"); } else { @@ -94,7 +95,7 @@ public class NodejsFunctionUtility { FileUtility.setPermission(currentNodeCommand); } else { - String nodeCommandName =nodeJsCommandEnum.commandName(); + String nodeCommandName = nodeJsCommandEnum.commandName(); nodeCommand = nodeCommandName; if (hasNodePackage) { nodeCommand = FileUtility.combine(nodeJsPath, nodeCommandName); diff --git a/web-common/src/main/java/com/inspur/edp/web/common/utility/OperatingSystemUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/utility/OperatingSystemUtility.java index 29e17a2b..281b0860 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/utility/OperatingSystemUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/utility/OperatingSystemUtility.java @@ -37,6 +37,14 @@ public class OperatingSystemUtility { return SystemUtils.IS_OS_LINUX; } + /** + * 是否Mac OS + * @return + */ + public static boolean isMac() { + return SystemUtils.IS_OS_MAC; + } + /** * 判断当前运行操作系统 是否是windows * 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 5cf30dd0..116aa1e9 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 @@ -26,7 +26,6 @@ import com.inspur.edp.cef.designtime.api.element.GspAssociation; import com.inspur.edp.cef.designtime.api.element.GspElementObjectType; import com.inspur.edp.formserver.viewmodel.GspViewModelElement; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; -import com.inspur.edp.lcm.metadata.api.service.RefCommonService; import com.inspur.edp.metadata.rtcustomization.api.CustomizationService; import com.inspur.edp.udt.designtime.api.entity.SimpleDataTypeDef; import com.inspur.edp.udt.designtime.api.nocode.BusinessField; 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 d185cba5..814ef5d8 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 @@ -59,7 +59,7 @@ public class FormMetadataDebugUriWithMobile extends AbstractFormMetadataDebugUri MetadataGetterParameter metadataGetterParameter=MetadataGetterParameter.getNewInstance(formMetadataId,null); metadataGetterParameter.setTargetMetadataNotFoundMessage("表单调试,获取表单元数据为空,对应元数据id:"+formMetadataId); - GspMetadata metadata = MetadataUtility.getInstance().getMetadataWithEnvironment(formMetadataId, ExecuteEnvironment.Design, false); + GspMetadata metadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); FormMetadataContent formMetadataContent = (FormMetadataContent) metadata.getContent(); FormDOM formDom = FormMetadataContentService.getInstance().getFormContent(formMetadataContent); HashMap component = null; diff --git a/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/cacheclean/NpmCacheCleanCommandExecutor.java b/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/cacheclean/NpmCacheCleanCommandExecutor.java index 1e43633b..7afd9f80 100644 --- a/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/cacheclean/NpmCacheCleanCommandExecutor.java +++ b/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/cacheclean/NpmCacheCleanCommandExecutor.java @@ -72,7 +72,7 @@ public class NpmCacheCleanCommandExecutor { StringBuffer errorSB = new StringBuffer(); String errorMessage = CommandLineUtility.executeCommand(command, errorSB); if (!StringUtility.isNullOrEmpty(errorMessage)) { - WebLogger.Instance.info(errorMessage, NpmCacheCleanCommandExecutor.class.getName()); + WebLogger.Instance.error(errorMessage, NpmCacheCleanCommandExecutor.class.getName()); } return NpmPackageResponse.create(); -- Gitee From 93e487b2a3886ea63d4d9ccc4057000ae9898c5a Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Mon, 20 Feb 2023 15:25:02 +0800 Subject: [PATCH 04/31] =?UTF-8?q?=E7=A7=BB=E9=99=A4system.out.print?= =?UTF-8?q?=EF=BC=8C=E6=94=B9=E7=94=B1=E4=BD=BF=E7=94=A8=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=BD=A2=E5=BC=8F=E8=BF=9B=E8=A1=8C=E8=BE=93=E5=87=BA=E3=80=82?= =?UTF-8?q?=E9=80=82=E9=85=8D=E6=97=A5=E5=BF=97=E7=BA=A7=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JitBuildParameterGenerator.java | 4 ---- .../JsonFileGeneratorFactory.java | 15 ++++++++------- .../core/service/JitBuildServiceImp.java | 1 - .../SourceCodeMetadataManager.java | 4 +--- .../localserver/LocalServerVersionManager.java | 2 +- .../service/ScriptCacheServiceImpl.java | 4 +--- .../core/service/ApprovalFormatServiceImpl.java | 2 +- .../com/inspur/edp/web/common/io/FileUtility.java | 2 -- .../web/designschema/generator/FieldBuilder.java | 2 +- .../webservice/DesignSchemaWebServiceImpl.java | 3 ++- .../edp/web/jitengine/JITEngineManager.java | 4 +--- .../sourcecode/SourceCodeInFormManager.java | 3 +-- .../replication/FormMetadataSmManager.java | 3 --- .../replication/FormMetadataVoManager.java | 3 --- .../frontendproject/FrontendProjectCompiler.java | 3 +-- .../frontendproject/FrontendProjectDeployer.java | 6 +++--- .../service/PageFlowMetadataUpdateService.java | 1 - .../utility/SourceCodeMetadataUtility.java | 3 ++- 18 files changed, 23 insertions(+), 42 deletions(-) diff --git a/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/buildparametergenerator/JitBuildParameterGenerator.java b/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/buildparametergenerator/JitBuildParameterGenerator.java index bc18fdf8..b2d34324 100644 --- a/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/buildparametergenerator/JitBuildParameterGenerator.java +++ b/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/buildparametergenerator/JitBuildParameterGenerator.java @@ -39,10 +39,6 @@ public class JitBuildParameterGenerator { String currentWorkPath = FileUtility.getCurrentWorkPath(buildParameter.isInUpgradeTool()); - if (buildParameter.isInUpgradeTool()) { - System.out.println("web: current work path is " + currentWorkPath); - } - // 如果未设定编译路径 那么设定当前程序运行环境所在根目录 if (StringUtility.isNullOrEmpty(buildParameter.getBuildProjectPath())) { // 工当前运行环境目录下增加runtimeprojects 文件目录 diff --git a/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/JsonFileGeneratorFactory.java b/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/JsonFileGeneratorFactory.java index 53ee50fa..5ab428ba 100644 --- a/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/JsonFileGeneratorFactory.java +++ b/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/JsonFileGeneratorFactory.java @@ -18,6 +18,7 @@ package com.inspur.edp.web.jitruntimebuild.core.formjsonfilegenerator; import com.inspur.edp.web.common.environment.ExecuteEnvironment; +import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.jitruntimebuild.api.entity.JitMetadataTypeEnum; /** @@ -31,25 +32,25 @@ public class JsonFileGeneratorFactory { JsonFileGeneratorInterface jsonFileGenerator = null; switch (metadataType) { case Frm: - jsonFileGenerator = new FrmJsonFileGenerator(executeEnvironment,isUpdradeTool); + jsonFileGenerator = new FrmJsonFileGenerator(executeEnvironment, isUpdradeTool); break; case Eapi: - jsonFileGenerator = new EapiJsonFileGenerator(executeEnvironment,isUpdradeTool); + jsonFileGenerator = new EapiJsonFileGenerator(executeEnvironment, isUpdradeTool); break; case Command: - jsonFileGenerator = new CommandJsonFileGenerator(executeEnvironment,isUpdradeTool); + jsonFileGenerator = new CommandJsonFileGenerator(executeEnvironment, isUpdradeTool); break; case Resource: - jsonFileGenerator = new ResourceJsonFileGenerator(executeEnvironment,isUpdradeTool); + jsonFileGenerator = new ResourceJsonFileGenerator(executeEnvironment, isUpdradeTool); break; case StateMachine: - jsonFileGenerator = new StateMachineJsonFileGenerator(executeEnvironment,isUpdradeTool); + jsonFileGenerator = new StateMachineJsonFileGenerator(executeEnvironment, isUpdradeTool); break; case Route: - jsonFileGenerator = new FormRouteJsonFileGenerator(executeEnvironment,isUpdradeTool); + jsonFileGenerator = new FormRouteJsonFileGenerator(executeEnvironment, isUpdradeTool); break; default: - System.out.println("unknown meta data type " + metadataType); + WebLogger.Instance.error("unknown meta data type " + metadataType); break; } return jsonFileGenerator; diff --git a/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/service/JitBuildServiceImp.java b/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/service/JitBuildServiceImp.java index 0486cbdc..d84db2d0 100644 --- a/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/service/JitBuildServiceImp.java +++ b/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/service/JitBuildServiceImp.java @@ -147,7 +147,6 @@ public class JitBuildServiceImp implements JitBuildService { String babelUrl = FileUtility.getPlatformIndependentPath("/" + buildParameter.getServiceUnitPath() + "/" + "web" + "/" + buildParameter.getBoCode() + "forbabelruntime" + "/" + buildParameter.getFormName() + com.inspur.edp.web.jitruntimebuild.core.utility.JitBuildUtility.getExtraPath(buildParameter.getExtraFormPath()) + "/index.html#/" + buildParameter.getFormName()); - System.out.println(babelUrl); Map mapResult = new HashMap<>(); mapResult.put("babelUrl", babelUrl); } diff --git a/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/sourcecodemetadata/SourceCodeMetadataManager.java b/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/sourcecodemetadata/SourceCodeMetadataManager.java index 46056014..243d6c45 100644 --- a/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/sourcecodemetadata/SourceCodeMetadataManager.java +++ b/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/sourcecodemetadata/SourceCodeMetadataManager.java @@ -77,7 +77,7 @@ public class SourceCodeMetadataManager { String strFileContent = Base64Utility.decode(item.getSourceFileContent()); // 如果文件内容为空 也进行文件内容的生成操作 String strWriteFilePath = getWriteFilePath(item, buildParameter); - System.out.println("待写入的目标文件路径为" + strWriteFilePath); + WebLogger.Instance.info("待写入的目标文件路径为" + strWriteFilePath, SourceCodeMetadataManager.class.getName()); FileUtility.writeFile(strWriteFilePath, strFileContent); } catch (UnsupportedEncodingException e) { WebLogger.Instance.error(e); @@ -93,8 +93,6 @@ public class SourceCodeMetadataManager { Path writeFilePath = Paths.get(buildParameter.getBuildAppPath(), generateSourcePath(sourceCodeItemEntity, buildParameter)); String strWritePath = writeFilePath.toString(); - - System.out.println("target file path is " + strWritePath); return strWritePath; } diff --git a/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/localserver/LocalServerVersionManager.java b/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/localserver/LocalServerVersionManager.java index 2666cbb8..9c21b885 100644 --- a/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/localserver/LocalServerVersionManager.java +++ b/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/localserver/LocalServerVersionManager.java @@ -104,7 +104,7 @@ public class LocalServerVersionManager { if (formScriptCacheList == null || formScriptCacheList.size() == 0) { cacheResponse.setSuccess(false); String errorMessage = "根据元数据id获取文件列表为空,对应元数据id:" + formMetadataId; - System.out.println(errorMessage); + WebLogger.Instance.error(errorMessage); errorMessage = "打开当前维度失败,请在【业务配置中心】,检查此维度是否进行了保存预览操作。相关元数据id:" + formMetadataId; cacheResponse.setErrorMessage(errorMessage); return cacheResponse; diff --git a/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/service/ScriptCacheServiceImpl.java b/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/service/ScriptCacheServiceImpl.java index ab102a45..70189ce9 100644 --- a/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/service/ScriptCacheServiceImpl.java +++ b/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/service/ScriptCacheServiceImpl.java @@ -88,9 +88,7 @@ public class ScriptCacheServiceImpl implements ScriptCacheService { fileList.add(new File(filePath)); } - - System.out.println("absoluteBaseDirectory:" + request.getAbsoluteBaseDirectory() + " 获取文件列表个数为:" + fileList.size()); - + WebLogger.Instance.info("absoluteBaseDirectory:" + request.getAbsoluteBaseDirectory() + " 获取文件列表个数为:" + fileList.size()); // 如果存在文件列表 if (fileList != null && fileList.size() > 0) { FormProjectCache finalFormProjectCache = formProjectCache; diff --git a/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormatServiceImpl.java b/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormatServiceImpl.java index aaa5ab97..31f29ae6 100644 --- a/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormatServiceImpl.java +++ b/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormatServiceImpl.java @@ -418,7 +418,7 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { @Override public void replicateApprovalFormat(String approvalFormatId) { - System.out.println("replicateApprovalFormat"); + } @Override 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 3aaed1f8..108f2436 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 @@ -688,11 +688,9 @@ public class FileUtility { for (int i = 0; i < len1; i++) { //只要有一个字节不同,两个文件就不一样 if (data1[i] != data2[i]) { - System.out.println("文件内容不一样"); return false; } } - System.out.println("两个文件完全相同"); return true; } else { //长度不一样,文件肯定不同 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 116aa1e9..995dc0cf 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 @@ -31,6 +31,7 @@ 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.environment.ExecuteEnvironment; +import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.StringUtility; @@ -469,7 +470,6 @@ public class FieldBuilder { objCode = belongedElement.getBelongObject().getCode(); } if (StringUtils.isEmpty(objCode)) { - System.out.println("belonged element is null"); return; } // String objectCode = belongedElement.getBelongObject().getCode(); diff --git a/web-designschema/src/main/java/com/inspur/edp/web/designschema/webservice/DesignSchemaWebServiceImpl.java b/web-designschema/src/main/java/com/inspur/edp/web/designschema/webservice/DesignSchemaWebServiceImpl.java index c98a13d4..18362e50 100644 --- a/web-designschema/src/main/java/com/inspur/edp/web/designschema/webservice/DesignSchemaWebServiceImpl.java +++ b/web-designschema/src/main/java/com/inspur/edp/web/designschema/webservice/DesignSchemaWebServiceImpl.java @@ -19,6 +19,7 @@ package com.inspur.edp.web.designschema.webservice; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.designschema.api.webservice.DesignSchemaWebService; import com.inspur.edp.web.designschema.elements.Schema; @@ -63,7 +64,7 @@ public class DesignSchemaWebServiceImpl implements DesignSchemaWebService { return SerializeUtility.getInstance().valueToJson(schema, PropertyNamingStrategy.LOWER_CAMEL_CASE).toString(); } catch (Exception ex) { - System.out.println(ex.getMessage() + Arrays.toString(ex.getStackTrace())); + WebLogger.Instance.error(ex, DesignSchemaWebServiceImpl.class.getName()); } return ""; } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java index ad94aecd..b4e0579e 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java @@ -124,7 +124,6 @@ public class JITEngineManager { /// 不考虑npm使用安装盘的情况 ExecuteEnvironmentChecker.beforeCompile(); - String ngCommand = NodejsFunctionUtility.getNgCommandInServer(isUpgradeTool); if (!OperatingSystemUtility.isLinux()) { commandArgs += "cd " + currentBuildPath; commandArgs += " && " + "npm run build "; @@ -551,9 +550,8 @@ public class JITEngineManager { String currentBuildPath = getProjectBuildPath(targetProjectPath, terminalType); - System.out.println("Build Path is:" + currentBuildPath); - String ngCommand = NodejsFunctionUtility.getNgCommandInServer(false); + WebLogger.Instance.info("Build Path is:" + currentBuildPath, JITEngineManager.class.getName()); /// 不考虑npm使用安装盘的情况 ExecuteEnvironmentChecker.beforeCompile(); diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/sourcecode/SourceCodeInFormManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/sourcecode/SourceCodeInFormManager.java index 591bf826..489988e8 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/sourcecode/SourceCodeInFormManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/sourcecode/SourceCodeInFormManager.java @@ -102,10 +102,9 @@ public class SourceCodeInFormManager { if (gspMetadata != null) { IMetadataContent metadataContent = gspMetadata.getContent(); SourceCodeMetadataEntity metadataEntity = SerializeUtility.getInstance().deserialize(SerializeUtility.getInstance().serialize(metadataContent, false), SourceCodeMetadataEntity.class); - System.out.println("获取元数据成功" + metadataEntity == null ? "为空" : "不为空"); return metadataEntity; } else { - System.out.println("根据元数据id获取元数据为空,对应元数据id为" + sourceCodeMetadataId); + WebLogger.Instance.info("根据元数据id获取元数据为空,对应元数据id为" + sourceCodeMetadataId, SourceCodeInFormManager.class.getName()); } } 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 a7fe19d8..1c0d222d 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 @@ -65,9 +65,6 @@ class FormMetadataSmManager { //原stateMachineId stateMachineId = replicateStateMachineMetadata.getHeader().getId(); // 更新表单内容statemachine - if (IsDebug) { - System.out.println("stateMachineId: " + stateMachineId); - } stateMachine.put("uri", stateMachineId); // 更新表单关联statemachine 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 ca512b56..4286fc3c 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 @@ -83,9 +83,6 @@ class FormMetadataVoManager { GspMetadata metadata = eapiMetadataDtService.create(replicateViewObjectMetadata, replicateViewObjectMetadata.getRelativePath(), ResourceType.VO_ADVANCE); SgMetadata eapiMetadata = (SgMetadata) metadata.getContent(); // 1.3 更新表单关联epaiId - if (isDebug) { - System.out.println("eapId: " + eapiMetadata.getId()); - } schema.put("eapiId", eapiMetadata.getId()); // 更新其他属性 diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java index b83d5018..60189f5d 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java @@ -56,8 +56,7 @@ public class FrontendProjectCompiler implements MetadataCompileAction { log.error("the Project Path is Empty When Compiling a Project"); throw new GSPException("MetadataCompile", "the Project Path is Empty "); } - - System.out.println("begin compile frontend project"); + WebLogger.Instance.info("begin compile frontend project", FrontendProjectCompiler.class.getName()); generateAndCompileFrontendProject(context); } diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectDeployer.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectDeployer.java index 32c5a96f..e240474b 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectDeployer.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectDeployer.java @@ -203,7 +203,7 @@ public class FrontendProjectDeployer { if (StringUtility.isNullOrEmpty(defaultDebuggerDeployment.getServerPath())) { throw new RuntimeException("默认环境未设置路径"); } - System.out.println("use default debugger deploy,the path is " + defaultDebuggerDeployment.getServerPath()); + WebLogger.Instance.debug("use default debugger deploy,the path is " + defaultDebuggerDeployment.getServerPath(), FrontendProjectDeployer.class.getName()); serverRootPath = defaultDebuggerDeployment.getServerPath(); } return serverRootPath; @@ -230,7 +230,7 @@ public class FrontendProjectDeployer { String deployServerPath = this.getDeployServerPath(defaultDebuggerDeployment); targetBaseDeployPath = FileUtility.combine(deployServerPath, "web", projectInfo.getSuDeploymentPath()); - System.out.println(targetBaseDeployPath); + // 将待部署文件拷贝到服务端部署目录 DeployFrontendProjectProductsForBabel(projectName, sourcePath, targetBaseDeployPath); @@ -241,7 +241,7 @@ public class FrontendProjectDeployer { DeployFrontMetadata(projectPath); long afterDt = System.currentTimeMillis(); long ts = afterDt - beforeDT; - System.out.println("部署前端元数据所需的时间为" + ts + "ms"); + WebLogger.Instance.info("部署前端元数据所需的时间为" + ts + "ms", FrontendProjectDeployer.class.getName()); } /** diff --git a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java index 85ab78a3..caea29d0 100644 --- a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java +++ b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java @@ -164,7 +164,6 @@ public class PageFlowMetadataUpdateService { if (StringUtility.isNullOrEmpty(currentProjectRelativePath)) { return null; } - System.out.println("MetadataProject Instance's Relative Path is: " + currentProjectRelativePath); appConfigInfo = GspAppConfigService.getCurrent().getGspAppConfigInfo(currentProjectRelativePath); diff --git a/web-sourcecode-metadata/src/main/java/com/inspur/edp/web/sourcecode/metadata/utility/SourceCodeMetadataUtility.java b/web-sourcecode-metadata/src/main/java/com/inspur/edp/web/sourcecode/metadata/utility/SourceCodeMetadataUtility.java index f5009a56..d248ec9f 100644 --- a/web-sourcecode-metadata/src/main/java/com/inspur/edp/web/sourcecode/metadata/utility/SourceCodeMetadataUtility.java +++ b/web-sourcecode-metadata/src/main/java/com/inspur/edp/web/sourcecode/metadata/utility/SourceCodeMetadataUtility.java @@ -19,6 +19,7 @@ package com.inspur.edp.web.sourcecode.metadata.utility; import com.inspur.edp.lcm.metadata.api.entity.MetadataProject; import com.inspur.edp.lcm.metadata.api.service.MetadataProjectService; import com.inspur.edp.web.common.encrypt.EncryptUtility; +import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.sourcecode.metadata.entity.SourceCodeItemEntity; @@ -59,7 +60,7 @@ public class SourceCodeMetadataUtility { log.error("sourceCodeMetadata saving," + ex.getMessage(), ex); } } else { - System.out.println("自定义web构件,文件不存在,对应路径路径:" + absolutePath); + WebLogger.Instance.info("自定义web构件,文件不存在,对应路径路径:" + absolutePath); } } -- Gitee From 3775caec161f937051c2acd129b3adc5b738cdb4 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Fri, 24 Feb 2023 14:18:54 +0800 Subject: [PATCH 05/31] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=A1=A8=E5=8D=95=E5=85=83=E6=95=B0=E6=8D=AE?= =?UTF-8?q?project?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dynamicform/web-dynamic-form-core/pom.xml | 36 ++ pom.xml | 14 + toout.bat | 2 + web-dynamic-form-api/pom.xml | 42 ++ .../DynamicCreateFormMetadataParameter.java | 86 +++ .../core/api/entity/FormMetadataInfo.java | 43 ++ .../api/entity/FormMetadataTemplateInfo.java | 42 ++ .../DynamicCreateFormMetadataService.java | 5 +- .../api/webservice/DynamicFormWebService.java | 41 ++ web-dynamic-form-core/pom.xml | 46 ++ .../DynamicFormConfiguration.java | 43 ++ .../DynamicCreateFormMetadataServiceImpl.java | 82 +++ .../webservice/DynamicFormWebServiceImpl.java | 12 +- .../main/resources/META-INF/spring.factories | 2 + .../form-template/new-list-template.json | 551 ++++++++++++++++++ ...amicCreateFormMetadataServiceImplTest.java | 57 ++ .../src/test/resources/new-list-template.json | 551 ++++++++++++++++++ 17 files changed, 1650 insertions(+), 5 deletions(-) create mode 100644 dynamicform/web-dynamic-form-core/pom.xml create mode 100644 web-dynamic-form-api/pom.xml create mode 100644 web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/DynamicCreateFormMetadataParameter.java create mode 100644 web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataInfo.java create mode 100644 web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataTemplateInfo.java rename {web-designschema-api/src/main/java/com/inspur/edp/web/designschema => web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core}/api/service/DynamicCreateFormMetadataService.java (86%) create mode 100644 web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/webservice/DynamicFormWebService.java create mode 100644 web-dynamic-form-core/pom.xml create mode 100644 web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/configuration/DynamicFormConfiguration.java create mode 100644 web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java rename web-designschema-api/src/main/java/com/inspur/edp/web/designschema/api/entity/DynamicCreateFormMetadataParameter.java => web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java (70%) create mode 100644 web-dynamic-form-core/src/main/resources/META-INF/spring.factories create mode 100644 web-dynamic-form-core/src/main/resources/template/form-template/new-list-template.json create mode 100644 web-dynamic-form-core/src/test/java/service/DynamicCreateFormMetadataServiceImplTest.java create mode 100644 web-dynamic-form-core/src/test/resources/new-list-template.json diff --git a/dynamicform/web-dynamic-form-core/pom.xml b/dynamicform/web-dynamic-form-core/pom.xml new file mode 100644 index 00000000..677d3380 --- /dev/null +++ b/dynamicform/web-dynamic-form-core/pom.xml @@ -0,0 +1,36 @@ + + + + + 4.0.0 + + com.inspur.edp + web + 0.1.9-SNAPSHOT + + + web-dynamic-form-core + + + 8 + 8 + UTF-8 + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index cb36978f..1c885a88 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,8 @@ web-npmpackage-core web-npmpackage-api web-npmpackage-patch + web-dynamic-form-api + web-dynamic-form-core @@ -292,6 +294,18 @@ ${custom.version} compile + + com.inspur.edp + web-dynamicform-api + ${custom.version} + compile + + + com.inspur.edp + web-dynamicform-core + ${custom.version} + compile + org.junit.jupiter junit-jupiter-api diff --git a/toout.bat b/toout.bat index 7a2db5f2..fa619847 100644 --- a/toout.bat +++ b/toout.bat @@ -54,6 +54,8 @@ COPY .\web-frontendproject-api\target\web-jitengine-frontendproject-api-%version COPY .\web-designschema\target\web-designschema-%version%.jar .\out\server\platform\common\libs\web-designschema.jar COPY .\web-designschema-api\target\web-designschema-api-%version%.jar .\out\server\platform\common\libs\web-designschema-api.jar +COPY .\web-dynamic-form-api\target\web-dynamicform-api-%version%.jar .\out\server\platform\common\libs\web-dynamic-form-api.jar +COPY .\web-dynamic-form-core\target\web-dynamic-form-core-%version%.jar .\out\server\platform\common\libs\web-dynamic-form-core.jar COPY .\web-pageflow-metadata\target\web-pageflow-metadata-%version%.jar .\out\server\platform\common\libs\web-pageflow-metadata.jar COPY .\web-statemachine\target\web-statemachine-metadata-%version%.jar .\out\server\platform\common\libs\web-statemachine-metadata.jar diff --git a/web-dynamic-form-api/pom.xml b/web-dynamic-form-api/pom.xml new file mode 100644 index 00000000..e1ca9995 --- /dev/null +++ b/web-dynamic-form-api/pom.xml @@ -0,0 +1,42 @@ + + + + + 4.0.0 + + com.inspur.edp + web + ${custom.version} + + + web-dynamicform-api + + + 8 + 8 + UTF-8 + + + + com.inspur.edp + web-jitengine-common + + + + \ No newline at end of file diff --git a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/DynamicCreateFormMetadataParameter.java b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/DynamicCreateFormMetadataParameter.java new file mode 100644 index 00000000..b0693861 --- /dev/null +++ b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/DynamicCreateFormMetadataParameter.java @@ -0,0 +1,86 @@ +/* + * 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.dynamicform.core.api.entity; + + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * 动态创建表单元数据参数 + * + * @author guozhiqi + */ +@Data +public class DynamicCreateFormMetadataParameter { + /** + * 工程路径 应该为相对路径,通过补充工作空间路径来构造称为绝对路径 + */ + private String projectPath; + /** + * 工程对应code参数值 + */ + private String projectCode; + + /** + * 工程所属namespace + */ + private String projectNameSpace; + + /** + * 业务对象id + */ + private String bizobjectID; + + /** + * eapi 元数据id + */ + private String eapiMetadataId; + + /** + * eapi元数据code参数值 + */ + private String eapiMetadataCode; + + /** + * eapi 元数据name参数值 + */ + private String eapiMetadataName; + + /** + * vo元数据id + */ + private String voMetadataId; + + /** + * vo元数据code参数值 + */ + private String voMetadataCode; + /** + * vo元数据name参数值 + */ + private String voMetadataName; + + /** + * 关联的表单信息列表 主要用于标识待创建的表单及其关联的模板信息 + */ + private List formMetadataInfoList = new ArrayList<>(); + + +} diff --git a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataInfo.java b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataInfo.java new file mode 100644 index 00000000..ef911340 --- /dev/null +++ b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataInfo.java @@ -0,0 +1,43 @@ +/* + * 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.dynamicform.core.api.entity; + +import lombok.Data; + +/** + * 关联的表单元数据信息 + * + * @author guozhiqi + */ +@Data +public class FormMetadataInfo { + + /** + * 待创建表单的code参数 + */ + private String code; + + /** + * 待创建表单的name参数值 + */ + private String name; + + /** + * 关联的表单模板信息 + */ + private FormMetadataTemplateInfo templateInfo; +} diff --git a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataTemplateInfo.java b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataTemplateInfo.java new file mode 100644 index 00000000..9bf346dc --- /dev/null +++ b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataTemplateInfo.java @@ -0,0 +1,42 @@ +/* + * 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.dynamicform.core.api.entity; + +import lombok.Data; + +/** + * 表单关联的模板信息 + * + * @author guozhiqi + */ +@Data +public class FormMetadataTemplateInfo { + /** + * 关联的表单模板id 此用来使用固定的模板参数 + */ + private String templateId; + /** + * 关联的表单模板code 此参数主要用于标识 + */ + private String templateCode; + + /** + * 关联的表单模板name 此参数主要用于标识 + */ + private String templateName; + +} diff --git a/web-designschema-api/src/main/java/com/inspur/edp/web/designschema/api/service/DynamicCreateFormMetadataService.java b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/service/DynamicCreateFormMetadataService.java similarity index 86% rename from web-designschema-api/src/main/java/com/inspur/edp/web/designschema/api/service/DynamicCreateFormMetadataService.java rename to web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/service/DynamicCreateFormMetadataService.java index d5eb3283..7763bbad 100644 --- a/web-designschema-api/src/main/java/com/inspur/edp/web/designschema/api/service/DynamicCreateFormMetadataService.java +++ b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/service/DynamicCreateFormMetadataService.java @@ -14,10 +14,10 @@ * limitations under the License. */ -package com.inspur.edp.web.designschema.api.service; +package com.inspur.edp.web.dynamicform.core.api.service; import com.inspur.edp.web.common.entity.ResultMessage; -import com.inspur.edp.web.designschema.api.entity.DynamicCreateFormMetadataParameter; +import com.inspur.edp.web.dynamicform.core.api.entity.DynamicCreateFormMetadataParameter; /** * 动态创建表单元数据 @@ -27,6 +27,7 @@ import com.inspur.edp.web.designschema.api.entity.DynamicCreateFormMetadataParam public interface DynamicCreateFormMetadataService { /** * 动态创建表单 + * * @param parameter 入参 * @return */ diff --git a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/webservice/DynamicFormWebService.java b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/webservice/DynamicFormWebService.java new file mode 100644 index 00000000..bde8142e --- /dev/null +++ b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/webservice/DynamicFormWebService.java @@ -0,0 +1,41 @@ +/* + * 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.dynamicform.core.api.webservice; + +import com.inspur.edp.web.common.entity.ResultMessage; + +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.core.MediaType; + +/** + * 动态创建表单web服务 + * @author guozhiqi + */ +@Path("/") +public interface DynamicFormWebService { + + /** + * 动态创建表单元数据 接口地址 + * @return + */ + @GET + @Path("/createform") + @Consumes({MediaType.APPLICATION_JSON,MediaType.TEXT_PLAIN}) + ResultMessagecreate(); +} diff --git a/web-dynamic-form-core/pom.xml b/web-dynamic-form-core/pom.xml new file mode 100644 index 00000000..6de82718 --- /dev/null +++ b/web-dynamic-form-core/pom.xml @@ -0,0 +1,46 @@ + + + + + 4.0.0 + + com.inspur.edp + web + ${custom.version} + + + web-dynamicform-core + + + 8 + 8 + UTF-8 + + + + com.inspur.edp + web-dynamicform-api + + + com.inspur.edp + web-jitengine-formmetadata + + + + \ No newline at end of file diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/configuration/DynamicFormConfiguration.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/configuration/DynamicFormConfiguration.java new file mode 100644 index 00000000..543acad1 --- /dev/null +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/configuration/DynamicFormConfiguration.java @@ -0,0 +1,43 @@ +/* + * 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.dynamicform.core.configuration; + +import com.inspur.edp.web.dynamicform.core.api.service.DynamicCreateFormMetadataService; +import com.inspur.edp.web.dynamicform.core.service.DynamicCreateFormMetadataServiceImpl; +import com.inspur.edp.web.dynamicform.core.webservice.DynamicFormWebServiceImpl; +import io.iec.edp.caf.rest.RESTEndpoint; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +/** + * 动态创建表单web 配置 + * + * @author guozhiqi + */ +@Configuration +public class DynamicFormConfiguration { + @Bean() + public RESTEndpoint dynamicFormWebServiceEndpoint() { + return new RESTEndpoint("/dev/main/v1.0/dynamicform", new DynamicFormWebServiceImpl()); + } + + @Bean + public DynamicCreateFormMetadataService getDynamicCreateFormMetadataService() { + return new DynamicCreateFormMetadataServiceImpl(); + } +} diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java new file mode 100644 index 00000000..c6ac3a19 --- /dev/null +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java @@ -0,0 +1,82 @@ +/* + * 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.dynamicform.core.service; + +import com.fasterxml.jackson.databind.JsonNode; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.MetadataHeader; +import com.inspur.edp.web.common.entity.ResultCode; +import com.inspur.edp.web.common.entity.ResultMessage; +import com.inspur.edp.web.common.io.FileUtility; +import com.inspur.edp.web.common.metadata.MetadataUtility; +import com.inspur.edp.web.common.serialize.SerializeUtility; +import com.inspur.edp.web.common.utility.RandomUtility; +import com.inspur.edp.web.dynamicform.core.api.entity.DynamicCreateFormMetadataParameter; +import com.inspur.edp.web.dynamicform.core.api.entity.FormMetadataInfo; +import com.inspur.edp.web.dynamicform.core.api.service.DynamicCreateFormMetadataService; +import com.inspur.edp.web.formmetadata.metadata.FormMetadataContent; +import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; + +/** + * 动态创建表单 + * + * @author guozhiqi + */ +public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMetadataService { + @Override + public ResultMessage create(DynamicCreateFormMetadataParameter parameter) { + ResultMessage resultMessage = ResultCode.success(); + + + String formMetadataRelativePath = FileUtility.combine(parameter.getProjectPath(), "metadata", "components"); + // 此处应该可能存在同时多个表单创建的情况 此处先使用第一个 + if (!parameter.getFormMetadataInfoList().isEmpty()) { + for (FormMetadataInfo metadataInfoItem : parameter.getFormMetadataInfoList()) { + GspMetadata formListMetadata = new GspMetadata(); + formListMetadata.setRelativePath(formMetadataRelativePath); + MetadataHeader metadataHeader = new MetadataHeader(); + metadataHeader.setName(metadataInfoItem.getName()); + metadataHeader.setCode(metadataInfoItem.getCode()); + metadataHeader.setFileName(metadataInfoItem.getCode() + ".frm"); + metadataHeader.setId(RandomUtility.newGuid()); + metadataHeader.setNameSpace(parameter.getProjectNameSpace()); + metadataHeader.setBizobjectID(parameter.getBizobjectID()); + + formListMetadata.setHeader(metadataHeader); + + // 读取资源文件中模板信息 + String templateFilePath = FileUtility.combine(FileUtility.getServerRTPath(), "web\\platform\\dev\\main\\web\\webide\\plugins\\form-create-wizard\\assets\\templates\\form-template\\new-list-template.json"); + String templateContent = FileUtility.readAsString(templateFilePath); + + FormMetadataContent formMetadataContent = new FormMetadataContent(); + formMetadataContent.setId(metadataHeader.getId()); + FormDOM formDOM = SerializeUtility.getInstance().deserialize(templateContent, FormDOM.class); + + JsonNode contentNode = SerializeUtility.getInstance().toJsonNode(templateContent); + formMetadataContent.setContents(contentNode); + + formListMetadata.setContent(formMetadataContent); + + // 保存对应的表单元数据 + MetadataUtility.getInstance().saveMetadata(formListMetadata); + } + } + + + return resultMessage; + } +} diff --git a/web-designschema-api/src/main/java/com/inspur/edp/web/designschema/api/entity/DynamicCreateFormMetadataParameter.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java similarity index 70% rename from web-designschema-api/src/main/java/com/inspur/edp/web/designschema/api/entity/DynamicCreateFormMetadataParameter.java rename to web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java index 2ac4e8aa..603b9ebb 100644 --- a/web-designschema-api/src/main/java/com/inspur/edp/web/designschema/api/entity/DynamicCreateFormMetadataParameter.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java @@ -14,11 +14,17 @@ * limitations under the License. */ -package com.inspur.edp.web.designschema.api.entity; +package com.inspur.edp.web.dynamicform.core.webservice; + +import com.inspur.edp.web.common.entity.ResultMessage; /** - * 动态创建表单元数据参数 + * 动态创建表单 * @author guozhiqi */ -public class DynamicCreateFormMetadataParameter { +public class DynamicFormWebServiceImpl implements DynamicFormWebService{ + @Override + public ResultMessage create() { + + } } diff --git a/web-dynamic-form-core/src/main/resources/META-INF/spring.factories b/web-dynamic-form-core/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..2e050321 --- /dev/null +++ b/web-dynamic-form-core/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +configuration.com.inspur.edp.web.dynamicform.core.DynamicFormConfiguration diff --git a/web-dynamic-form-core/src/main/resources/template/form-template/new-list-template.json b/web-dynamic-form-core/src/main/resources/template/form-template/new-list-template.json new file mode 100644 index 00000000..81411e97 --- /dev/null +++ b/web-dynamic-form-core/src/main/resources/template/form-template/new-list-template.json @@ -0,0 +1,551 @@ +{ + "module": { + "id": "new-list-template", + "code": "new-list-template", + "name": "新列表模板", + "caption": "新列表模板", + "type": "Module", + "creator": "wang-xh", + "creationDate": "2018-08-30 10:56:00", + "updateVersion": "191104", + "showTitle": true, + "bootstrap": "list-template", + "templateId": "list-template", + "schemas": [], + "states": [], + "contents": [], + "stateMachines": [], + "viewmodels": [ + { + "id": "root-viewmodel", + "code": "root-viewmodel", + "name": "root-viewmodel", + "fields": [], + "stateMachine": null, + "serviceRefs": [], + "commands": [ + { + "id": "93ee1cd2-cf0b-40b3-b99f-958a3d1fad1c", + "code": "Load1", + "name": "加载数据", + "params": [ + { + "name": "filter", + "shownName": "过滤条件", + "value": "" + }, + { + "name": "sort", + "shownName": "排序条件", + "value": "" + } + ], + "handlerName": "Load", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + }, + { + "id": "71ae8a4c-6202-4875-9246-2e2d959da37f", + "code": "Search1", + "name": "查询数据", + "params": [ + { + "name": "filter", + "shownName": "过滤条件", + "value": "" + }, + { + "name": "sort", + "shownName": "排序条件", + "value": "" + }, + { + "name": "pageSize", + "shownName": "分页大小", + "value": "" + }, + { + "name": "pageIndex", + "shownName": "当前页码", + "value": "" + } + ], + "handlerName": "Search", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + }, + { + "id": "6d5a354f-871f-43e6-82bc-7837184380d3", + "code": "RemoveRows1", + "name": "删除多行数据", + "params": [ + { + "name": "ids", + "shownName": "待删除数据的标识", + "value": "{UISTATE~/data-grid-component/ids}" + } + ], + "handlerName": "RemoveRows", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + }, + { + "id": "77556491-41c0-4356-8ccf-25e39817060e", + "code": "Add1", + "name": "在新页签中新增数据", + "params": [ + { + "name": "url", + "shownName": "功能菜单标识", + "value": "" + }, + { + "name": "params", + "shownName": "附加参数", + "value": "{\"action\":\"LoadAndAdd1\"}" + } + ], + "handlerName": "Add", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + }, + { + "id": "52fdcac3-46c8-466e-aa5d-19920ece2076", + "code": "View1", + "name": "在新页签中查看数据", + "params": [ + { + "name": "url", + "shownName": "功能菜单标识", + "value": "" + }, + { + "name": "params", + "shownName": "附加参数", + "value": "{\"action\":\"LoadAndView1\", \"id\":\"{DATA~/data-grid-component/id}\"}" + }, + { + "name": "idToView", + "shownName": "待查看数据的标识", + "value": "{DATA~/data-grid-component/id}" + } + ], + "handlerName": "View", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + }, + { + "id": "7ade9996-0531-4401-b1bc-fb9ec8ee3f8e", + "code": "Edit1", + "name": "在新页签中编辑数据", + "params": [ + { + "name": "url", + "shownName": "功能菜单标识", + "value": "" + }, + { + "name": "params", + "shownName": "附加参数", + "value": "{\"action\":\"LoadAndEdit1\", \"id\":\"{DATA~/data-grid-component/id}\"}" + }, + { + "name": "idToEdit", + "shownName": "待编辑数据的标识", + "value": "{DATA~/data-grid-component/id}", + "defaultValue": null + } + ], + "handlerName": "Edit", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + }, + { + "id": "debae2dd-3387-48cf-90ba-96e74ab5a8e5", + "code": "Remove1", + "name": "删除当前数据", + "params": [ + { + "name": "id", + "shownName": "待删除数据的标识", + "value": "{DATA~/data-grid-component/id}" + } + ], + "handlerName": "Remove", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + }, + { + "id": "0d36eb0a-fe86-4769-b232-b84c72dcc02f", + "code": "Filter1", + "name": "过滤并加载数据1", + "params": [ + { + "name": "filter", + "shownName": "过滤条件", + "value": "{UISTATE~/root-component/originalFilterConditionList}" + }, + { + "name": "sort", + "shownName": "排序条件", + "value": "" + } + ], + "handlerName": "Filter", + "cmpId": "54bddc89-5f7e-4b91-9c45-80dd6606cfe9", + "shortcut": {}, + "extensions": [] + } + ], + "states": [ + { + "id": "ad1250a9-fe0c-4dcf-81fe-9c2c52608c66", + "category": "locale", + "code": "originalFilterConditionList", + "name": "筛选方案筛选条件", + "type": "String" + } + ], + "bindTo": "/" + }, + { + "id": "data-grid-component-viewmodel", + "code": "data-grid-component-viewmodel", + "name": "data-grid-component-viewmodel", + "fields": [], + "serviceRefs": [], + "commands": [ + { + "id": "1a1b7c33-38f0-469f-a017-223086ee6259", + "code": "ChangePage1", + "name": "切换页码", + "params": [ + { + "name": "loadCommandName", + "shownName": "数据加载命令名称", + "value": "Load1" + }, + { + "name": "loadCommandFrameId", + "shownName": "数据加载命令框架id", + "value": "root-component" + } + ], + "handlerName": "ChangePage", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + } + ], + "states": [], + "bindTo": "/", + "parent": "root-viewmodel", + "pagination": { + "enable": true, + "pageSize": 20 + } + } + ], + "components": [ + { + "id": "root-component", + "type": "Component", + "componentType": "Frame", + "viewModel": "root-viewmodel", + "onInit": "Load1", + "contents": [ + { + "id": "root-layout", + "type": "ContentContainer", + "appearance": { + "class": "f-page f-page-is-managelist f-page-has-scheme" + }, + "size": null, + "contents": [ + { + "id": "query-scheme-section", + "type": "Section", + "appearance": { + "class": "f-section-scheme f-section-in-managelist" + }, + "size": null, + "fill": false, + "expanded": true, + "showHeader": false, + "contents": [ + { + "id": "query-scheme-1", + "type": "QueryScheme", + "appearance": null, + "fieldConfigs": [], + "presetFieldConfigs": [], + "formId": "new-list-template", + "isDisabled": false, + "presetQuerySolutionName": "默认筛选方案", + "onQuery": "Filter1", + "isControlInline": true + } + ] + }, + { + "id": "page-header", + "type": "ContentContainer", + "appearance": { + "class": "f-page-header" + }, + "size": null, + "contents": [ + { + "id": "header-nav", + "type": "ContentContainer", + "appearance": { + "class": "f-page-header-base" + }, + "size": null, + "contents": [ + { + "id": "header-title-container", + "type": "ContentContainer", + "appearance": { + "class": "f-title" + }, + "size": null, + "contents": [ + { + "id": "page-header-title", + "type": "HtmlTemplate", + "html": "

${title}

" + } + ] + }, + { + "id": "page-header-toolbar", + "type": "ToolBar", + "appearance": { + "class": "col-7 f-toolbar" + }, + "size": null, + "items": [ + { + "id": "button-add", + "type": "ToolBarItem", + "appearance": { + "class": "btn-primary" + }, + "disable": "!viewModel.stateMachine['canAdd']", + "text": "新增", + "visible": true, + "click": "Add1" + }, + { + "id": "button-edit", + "type": "ToolBarItem", + "appearance": null, + "disable": "!viewModel.stateMachine['canEdit']", + "text": "编辑", + "visible": true, + "click": "Edit1" + }, + { + "id": "button-view", + "type": "ToolBarItem", + "appearance": null, + "disable": "!viewModel.stateMachine['canView']", + "text": "查看", + "visible": true, + "click": "View1" + }, + { + "id": "button-delete", + "type": "ToolBarItem", + "appearance": null, + "disable": "!viewModel.stateMachine['canRemove']", + "text": "删除", + "visible": true, + "click": "Remove1" + } + ] + } + ] + } + ] + }, + { + "id": "page-main", + "type": "ContentContainer", + "appearance": { + "class": "f-page-main" + }, + "size": null, + "contents": [ + { + "id": "data-grid-component-ref", + "type": "ComponentRef", + "component": "data-grid-component" + } + ] + } + ] + } + ] + }, + { + "id": "data-grid-component", + "type": "Component", + "componentType": "dataGrid", + "viewModel": "data-grid-component-viewmodel", + "appearance": { + "class": "f-struct-wrapper f-utils-fill-flex-column" + }, + "onInit": "", + "contents": [ + { + "id": "data-grid-section", + "type": "Section", + "appearance": { + "class": "f-section-grid f-section-in-managelist" + }, + "size": null, + "mainTitle": "", + "subTitle": "", + "headerClass": "", + "titleClass": "", + "extendedHeaderAreaClass": "", + "toolbarClass": "", + "extendedAreaClass": "", + "contentTemplateClass": "", + "fill": true, + "expanded": true, + "enableMaximize": true, + "enableAccordion": true, + "accordionMode": "default", + "showHeader": false, + "headerTemplate": "", + "titleTemplate": "", + "extendedHeaderAreaTemplate": "", + "toolbarTemplate": "", + "extendedAreaTemplate": "", + "contents": [ + { + "id": "dataGrid", + "type": "DataGrid", + "controlSource": "Farris", + "appearance": { + "class": "f-component-grid" + }, + "size": null, + "dataSource": "", + "fields": [], + "focusedItem": null, + "focusedIndex": null, + "identifyField": null, + "multiSelect": false, + "selectable": null, + "showCheckbox": false, + "showAllCheckbox": false, + "checkOnSelect": false, + "selectOnCheck": false, + "itemTemplate": null, + "toolBar": null, + "summary": null, + "groupable": false, + "group": null, + "showGroupColumn": true, + "groupFormatter": null, + "groupStyler": null, + "groupFooter": false, + "fitColumns": false, + "autoFitColumns": false, + "virtualized": false, + "virtualizedAsyncLoad": false, + "scrollYLoad": "ChangePage1", + "onSelectionChange": "", + "fieldEditable": false, + "appendRow": null, + "disable": false, + "pageChange": "ChangePage1", + "pageSizeChanged": "ChangePage1", + "styler": "", + "multiSort": false, + "showBorder": false, + "striped": true, + "showLineNumber": false, + "disableRow": null, + "beforeSelect": null, + "beforeUnSelect": null, + "beforeCheck": null, + "beforeUnCheck": null, + "dblClickRow": null, + "showFooter": false, + "footerTemplate": "", + "footerDataFrom": "client", + "footerDataCommand": null, + "enableFilterRow": false, + "remoteFilter": false, + "showFilterBar": false, + "useControlPanel": false, + "autoHeight": false, + "showSelectedList": false, + "selectedItemFormatter": null, + "lineNumberWidth": 36, + "enableMorePageSelect": false + } + ] + } + ] + } + ], + "webcmds": [ + { + "id": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "path": "/projects/packages/Inspur.GS.Gsp.Web.WebCmp/webcmd", + "name": "ListController.webcmd", + "refedHandlers": [ + { + "host": "93ee1cd2-cf0b-40b3-b99f-958a3d1fad1c", + "handler": "Load" + }, + { + "host": "71ae8a4c-6202-4875-9246-2e2d959da37f", + "handler": "Search" + }, + { + "host": "77556491-41c0-4356-8ccf-25e39817060e", + "handler": "Add" + }, + { + "host": "52fdcac3-46c8-466e-aa5d-19920ece2076", + "handler": "View" + }, + { + "host": "7ade9996-0531-4401-b1bc-fb9ec8ee3f8e", + "handler": "Edit" + }, + { + "host": "6d5a354f-871f-43e6-82bc-7837184380d3", + "handler": "RemoveRows" + }, + { + "host": "1a1b7c33-38f0-469f-a017-223086ee6259", + "handler": "ChangePage" + }, + { + "host": "debae2dd-3387-48cf-90ba-96e74ab5a8e5", + "handler": "Remove" + } + ] + }, + { + "id": "54bddc89-5f7e-4b91-9c45-80dd6606cfe9", + "path": "igix/Web/WebCmp/bo-webcmp/metadata/webcmd/data-commands", + "name": "LoadCommands.webcmd", + "refedHandlers": [ + { + "host": "0d36eb0a-fe86-4769-b232-b84c72dcc02f", + "handler": "Filter" + } + ] + } + ], + "serviceRefs": [] + } +} \ No newline at end of file diff --git a/web-dynamic-form-core/src/test/java/service/DynamicCreateFormMetadataServiceImplTest.java b/web-dynamic-form-core/src/test/java/service/DynamicCreateFormMetadataServiceImplTest.java new file mode 100644 index 00000000..047fca07 --- /dev/null +++ b/web-dynamic-form-core/src/test/java/service/DynamicCreateFormMetadataServiceImplTest.java @@ -0,0 +1,57 @@ +/* + * 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 service; + +import com.inspur.edp.web.common.serialize.SerializeUtility; +import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; +import org.junit.Test; +import org.springframework.core.io.ClassPathResource; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; + +import static org.junit.Assert.*; + +public class DynamicCreateFormMetadataServiceImplTest { + + @Test + public void testDeserialize() throws IOException { + String content = this.readResourceFile(); + FormDOM formDOM = SerializeUtility.getInstance().deserialize(content, FormDOM.class); + System.out.println("读取资源文件"); + } + + + private String readResourceFile() throws IOException { + ClassPathResource classPathResource = new ClassPathResource("new-list-template.json"); + + // 获得File对象,当然也可以获取输入流对象 + File file = classPathResource.getFile(); + + BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); + StringBuilder content = new StringBuilder(); + String line = null; + while ((line = bufferedReader.readLine()) != null) { + content.append(line); + } + + return content.toString(); + } + +} \ No newline at end of file diff --git a/web-dynamic-form-core/src/test/resources/new-list-template.json b/web-dynamic-form-core/src/test/resources/new-list-template.json new file mode 100644 index 00000000..81411e97 --- /dev/null +++ b/web-dynamic-form-core/src/test/resources/new-list-template.json @@ -0,0 +1,551 @@ +{ + "module": { + "id": "new-list-template", + "code": "new-list-template", + "name": "新列表模板", + "caption": "新列表模板", + "type": "Module", + "creator": "wang-xh", + "creationDate": "2018-08-30 10:56:00", + "updateVersion": "191104", + "showTitle": true, + "bootstrap": "list-template", + "templateId": "list-template", + "schemas": [], + "states": [], + "contents": [], + "stateMachines": [], + "viewmodels": [ + { + "id": "root-viewmodel", + "code": "root-viewmodel", + "name": "root-viewmodel", + "fields": [], + "stateMachine": null, + "serviceRefs": [], + "commands": [ + { + "id": "93ee1cd2-cf0b-40b3-b99f-958a3d1fad1c", + "code": "Load1", + "name": "加载数据", + "params": [ + { + "name": "filter", + "shownName": "过滤条件", + "value": "" + }, + { + "name": "sort", + "shownName": "排序条件", + "value": "" + } + ], + "handlerName": "Load", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + }, + { + "id": "71ae8a4c-6202-4875-9246-2e2d959da37f", + "code": "Search1", + "name": "查询数据", + "params": [ + { + "name": "filter", + "shownName": "过滤条件", + "value": "" + }, + { + "name": "sort", + "shownName": "排序条件", + "value": "" + }, + { + "name": "pageSize", + "shownName": "分页大小", + "value": "" + }, + { + "name": "pageIndex", + "shownName": "当前页码", + "value": "" + } + ], + "handlerName": "Search", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + }, + { + "id": "6d5a354f-871f-43e6-82bc-7837184380d3", + "code": "RemoveRows1", + "name": "删除多行数据", + "params": [ + { + "name": "ids", + "shownName": "待删除数据的标识", + "value": "{UISTATE~/data-grid-component/ids}" + } + ], + "handlerName": "RemoveRows", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + }, + { + "id": "77556491-41c0-4356-8ccf-25e39817060e", + "code": "Add1", + "name": "在新页签中新增数据", + "params": [ + { + "name": "url", + "shownName": "功能菜单标识", + "value": "" + }, + { + "name": "params", + "shownName": "附加参数", + "value": "{\"action\":\"LoadAndAdd1\"}" + } + ], + "handlerName": "Add", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + }, + { + "id": "52fdcac3-46c8-466e-aa5d-19920ece2076", + "code": "View1", + "name": "在新页签中查看数据", + "params": [ + { + "name": "url", + "shownName": "功能菜单标识", + "value": "" + }, + { + "name": "params", + "shownName": "附加参数", + "value": "{\"action\":\"LoadAndView1\", \"id\":\"{DATA~/data-grid-component/id}\"}" + }, + { + "name": "idToView", + "shownName": "待查看数据的标识", + "value": "{DATA~/data-grid-component/id}" + } + ], + "handlerName": "View", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + }, + { + "id": "7ade9996-0531-4401-b1bc-fb9ec8ee3f8e", + "code": "Edit1", + "name": "在新页签中编辑数据", + "params": [ + { + "name": "url", + "shownName": "功能菜单标识", + "value": "" + }, + { + "name": "params", + "shownName": "附加参数", + "value": "{\"action\":\"LoadAndEdit1\", \"id\":\"{DATA~/data-grid-component/id}\"}" + }, + { + "name": "idToEdit", + "shownName": "待编辑数据的标识", + "value": "{DATA~/data-grid-component/id}", + "defaultValue": null + } + ], + "handlerName": "Edit", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + }, + { + "id": "debae2dd-3387-48cf-90ba-96e74ab5a8e5", + "code": "Remove1", + "name": "删除当前数据", + "params": [ + { + "name": "id", + "shownName": "待删除数据的标识", + "value": "{DATA~/data-grid-component/id}" + } + ], + "handlerName": "Remove", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + }, + { + "id": "0d36eb0a-fe86-4769-b232-b84c72dcc02f", + "code": "Filter1", + "name": "过滤并加载数据1", + "params": [ + { + "name": "filter", + "shownName": "过滤条件", + "value": "{UISTATE~/root-component/originalFilterConditionList}" + }, + { + "name": "sort", + "shownName": "排序条件", + "value": "" + } + ], + "handlerName": "Filter", + "cmpId": "54bddc89-5f7e-4b91-9c45-80dd6606cfe9", + "shortcut": {}, + "extensions": [] + } + ], + "states": [ + { + "id": "ad1250a9-fe0c-4dcf-81fe-9c2c52608c66", + "category": "locale", + "code": "originalFilterConditionList", + "name": "筛选方案筛选条件", + "type": "String" + } + ], + "bindTo": "/" + }, + { + "id": "data-grid-component-viewmodel", + "code": "data-grid-component-viewmodel", + "name": "data-grid-component-viewmodel", + "fields": [], + "serviceRefs": [], + "commands": [ + { + "id": "1a1b7c33-38f0-469f-a017-223086ee6259", + "code": "ChangePage1", + "name": "切换页码", + "params": [ + { + "name": "loadCommandName", + "shownName": "数据加载命令名称", + "value": "Load1" + }, + { + "name": "loadCommandFrameId", + "shownName": "数据加载命令框架id", + "value": "root-component" + } + ], + "handlerName": "ChangePage", + "cmpId": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "extensions": [] + } + ], + "states": [], + "bindTo": "/", + "parent": "root-viewmodel", + "pagination": { + "enable": true, + "pageSize": 20 + } + } + ], + "components": [ + { + "id": "root-component", + "type": "Component", + "componentType": "Frame", + "viewModel": "root-viewmodel", + "onInit": "Load1", + "contents": [ + { + "id": "root-layout", + "type": "ContentContainer", + "appearance": { + "class": "f-page f-page-is-managelist f-page-has-scheme" + }, + "size": null, + "contents": [ + { + "id": "query-scheme-section", + "type": "Section", + "appearance": { + "class": "f-section-scheme f-section-in-managelist" + }, + "size": null, + "fill": false, + "expanded": true, + "showHeader": false, + "contents": [ + { + "id": "query-scheme-1", + "type": "QueryScheme", + "appearance": null, + "fieldConfigs": [], + "presetFieldConfigs": [], + "formId": "new-list-template", + "isDisabled": false, + "presetQuerySolutionName": "默认筛选方案", + "onQuery": "Filter1", + "isControlInline": true + } + ] + }, + { + "id": "page-header", + "type": "ContentContainer", + "appearance": { + "class": "f-page-header" + }, + "size": null, + "contents": [ + { + "id": "header-nav", + "type": "ContentContainer", + "appearance": { + "class": "f-page-header-base" + }, + "size": null, + "contents": [ + { + "id": "header-title-container", + "type": "ContentContainer", + "appearance": { + "class": "f-title" + }, + "size": null, + "contents": [ + { + "id": "page-header-title", + "type": "HtmlTemplate", + "html": "

${title}

" + } + ] + }, + { + "id": "page-header-toolbar", + "type": "ToolBar", + "appearance": { + "class": "col-7 f-toolbar" + }, + "size": null, + "items": [ + { + "id": "button-add", + "type": "ToolBarItem", + "appearance": { + "class": "btn-primary" + }, + "disable": "!viewModel.stateMachine['canAdd']", + "text": "新增", + "visible": true, + "click": "Add1" + }, + { + "id": "button-edit", + "type": "ToolBarItem", + "appearance": null, + "disable": "!viewModel.stateMachine['canEdit']", + "text": "编辑", + "visible": true, + "click": "Edit1" + }, + { + "id": "button-view", + "type": "ToolBarItem", + "appearance": null, + "disable": "!viewModel.stateMachine['canView']", + "text": "查看", + "visible": true, + "click": "View1" + }, + { + "id": "button-delete", + "type": "ToolBarItem", + "appearance": null, + "disable": "!viewModel.stateMachine['canRemove']", + "text": "删除", + "visible": true, + "click": "Remove1" + } + ] + } + ] + } + ] + }, + { + "id": "page-main", + "type": "ContentContainer", + "appearance": { + "class": "f-page-main" + }, + "size": null, + "contents": [ + { + "id": "data-grid-component-ref", + "type": "ComponentRef", + "component": "data-grid-component" + } + ] + } + ] + } + ] + }, + { + "id": "data-grid-component", + "type": "Component", + "componentType": "dataGrid", + "viewModel": "data-grid-component-viewmodel", + "appearance": { + "class": "f-struct-wrapper f-utils-fill-flex-column" + }, + "onInit": "", + "contents": [ + { + "id": "data-grid-section", + "type": "Section", + "appearance": { + "class": "f-section-grid f-section-in-managelist" + }, + "size": null, + "mainTitle": "", + "subTitle": "", + "headerClass": "", + "titleClass": "", + "extendedHeaderAreaClass": "", + "toolbarClass": "", + "extendedAreaClass": "", + "contentTemplateClass": "", + "fill": true, + "expanded": true, + "enableMaximize": true, + "enableAccordion": true, + "accordionMode": "default", + "showHeader": false, + "headerTemplate": "", + "titleTemplate": "", + "extendedHeaderAreaTemplate": "", + "toolbarTemplate": "", + "extendedAreaTemplate": "", + "contents": [ + { + "id": "dataGrid", + "type": "DataGrid", + "controlSource": "Farris", + "appearance": { + "class": "f-component-grid" + }, + "size": null, + "dataSource": "", + "fields": [], + "focusedItem": null, + "focusedIndex": null, + "identifyField": null, + "multiSelect": false, + "selectable": null, + "showCheckbox": false, + "showAllCheckbox": false, + "checkOnSelect": false, + "selectOnCheck": false, + "itemTemplate": null, + "toolBar": null, + "summary": null, + "groupable": false, + "group": null, + "showGroupColumn": true, + "groupFormatter": null, + "groupStyler": null, + "groupFooter": false, + "fitColumns": false, + "autoFitColumns": false, + "virtualized": false, + "virtualizedAsyncLoad": false, + "scrollYLoad": "ChangePage1", + "onSelectionChange": "", + "fieldEditable": false, + "appendRow": null, + "disable": false, + "pageChange": "ChangePage1", + "pageSizeChanged": "ChangePage1", + "styler": "", + "multiSort": false, + "showBorder": false, + "striped": true, + "showLineNumber": false, + "disableRow": null, + "beforeSelect": null, + "beforeUnSelect": null, + "beforeCheck": null, + "beforeUnCheck": null, + "dblClickRow": null, + "showFooter": false, + "footerTemplate": "", + "footerDataFrom": "client", + "footerDataCommand": null, + "enableFilterRow": false, + "remoteFilter": false, + "showFilterBar": false, + "useControlPanel": false, + "autoHeight": false, + "showSelectedList": false, + "selectedItemFormatter": null, + "lineNumberWidth": 36, + "enableMorePageSelect": false + } + ] + } + ] + } + ], + "webcmds": [ + { + "id": "70b4abd4-9f2c-4b7c-90e9-6ac6f4b74c72", + "path": "/projects/packages/Inspur.GS.Gsp.Web.WebCmp/webcmd", + "name": "ListController.webcmd", + "refedHandlers": [ + { + "host": "93ee1cd2-cf0b-40b3-b99f-958a3d1fad1c", + "handler": "Load" + }, + { + "host": "71ae8a4c-6202-4875-9246-2e2d959da37f", + "handler": "Search" + }, + { + "host": "77556491-41c0-4356-8ccf-25e39817060e", + "handler": "Add" + }, + { + "host": "52fdcac3-46c8-466e-aa5d-19920ece2076", + "handler": "View" + }, + { + "host": "7ade9996-0531-4401-b1bc-fb9ec8ee3f8e", + "handler": "Edit" + }, + { + "host": "6d5a354f-871f-43e6-82bc-7837184380d3", + "handler": "RemoveRows" + }, + { + "host": "1a1b7c33-38f0-469f-a017-223086ee6259", + "handler": "ChangePage" + }, + { + "host": "debae2dd-3387-48cf-90ba-96e74ab5a8e5", + "handler": "Remove" + } + ] + }, + { + "id": "54bddc89-5f7e-4b91-9c45-80dd6606cfe9", + "path": "igix/Web/WebCmp/bo-webcmp/metadata/webcmd/data-commands", + "name": "LoadCommands.webcmd", + "refedHandlers": [ + { + "host": "0d36eb0a-fe86-4769-b232-b84c72dcc02f", + "handler": "Filter" + } + ] + } + ], + "serviceRefs": [] + } +} \ No newline at end of file -- Gitee From e4bbcc76119aa0de147df730aefac3ff566b1d2d Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Fri, 24 Feb 2023 16:13:20 +0800 Subject: [PATCH 06/31] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=A1=A8=E5=8D=95=E5=85=83=E6=95=B0=E6=8D=AE?= =?UTF-8?q?project?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customexception/DynamicFormException.java | 32 +++++++++ .../core/api/entity/FormMetadataInfo.java | 33 ++++++++- .../api/webservice/DynamicFormWebService.java | 6 +- web-dynamic-form-core/pom.xml | 4 ++ .../DynamicCreateFormMetadataServiceImpl.java | 71 ++++++++++++++++++- .../webservice/DynamicFormWebServiceImpl.java | 37 +++++++++- .../main/resources/META-INF/spring.factories | 2 +- ...amicCreateFormMetadataServiceImplTest.java | 33 +++++++++ 8 files changed, 212 insertions(+), 6 deletions(-) create mode 100644 web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/customexception/DynamicFormException.java create mode 100644 web-dynamic-form-core/src/test/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImplTest.java diff --git a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/customexception/DynamicFormException.java b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/customexception/DynamicFormException.java new file mode 100644 index 00000000..86081850 --- /dev/null +++ b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/customexception/DynamicFormException.java @@ -0,0 +1,32 @@ +/* + * 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.dynamicform.core.api.customexception; + +/** + * 自定义异常定义 + * @author guozhiqi + */ +public class DynamicFormException extends RuntimeException { + public DynamicFormException(String errorMessage) { + super(errorMessage); + } + + public DynamicFormException(String errorMessage, Throwable innerException) { + super(errorMessage, innerException); + } + +} diff --git a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataInfo.java b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataInfo.java index ef911340..2b74db8d 100644 --- a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataInfo.java +++ b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataInfo.java @@ -16,6 +16,7 @@ package com.inspur.edp.web.dynamicform.core.api.entity; +import com.inspur.edp.web.common.utility.StringUtility; import lombok.Data; /** @@ -23,7 +24,6 @@ import lombok.Data; * * @author guozhiqi */ -@Data public class FormMetadataInfo { /** @@ -31,13 +31,44 @@ public class FormMetadataInfo { */ private String code; + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + + + + /** * 待创建表单的name参数值 */ private String name; + public String getName() { + if (StringUtility.isNullOrEmpty(this.name)) { + return this.getCode(); + } + return name; + } + + public void setName(String name) { + this.name = name; + } + /** * 关联的表单模板信息 */ private FormMetadataTemplateInfo templateInfo; + + public FormMetadataTemplateInfo getTemplateInfo() { + return templateInfo; + } + + public void setTemplateInfo(FormMetadataTemplateInfo templateInfo) { + this.templateInfo = templateInfo; + } } diff --git a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/webservice/DynamicFormWebService.java b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/webservice/DynamicFormWebService.java index bde8142e..7431d5c0 100644 --- a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/webservice/DynamicFormWebService.java +++ b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/webservice/DynamicFormWebService.java @@ -25,6 +25,7 @@ import javax.ws.rs.core.MediaType; /** * 动态创建表单web服务 + * * @author guozhiqi */ @Path("/") @@ -32,10 +33,11 @@ public interface DynamicFormWebService { /** * 动态创建表单元数据 接口地址 + * * @return */ @GET @Path("/createform") - @Consumes({MediaType.APPLICATION_JSON,MediaType.TEXT_PLAIN}) - ResultMessagecreate(); + @Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN}) + ResultMessage create(); } diff --git a/web-dynamic-form-core/pom.xml b/web-dynamic-form-core/pom.xml index 6de82718..4514dbb2 100644 --- a/web-dynamic-form-core/pom.xml +++ b/web-dynamic-form-core/pom.xml @@ -37,6 +37,10 @@ com.inspur.edp web-dynamicform-api
+ + com.inspur.edp + web-designschema + com.inspur.edp web-jitengine-formmetadata diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java index c6ac3a19..9d425c1e 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java @@ -17,16 +17,24 @@ package com.inspur.edp.web.dynamicform.core.service; import com.fasterxml.jackson.databind.JsonNode; +import com.inspur.edp.formserver.viewmodel.GspViewModel; +import com.inspur.edp.lcm.metadata.api.IMetadataContent; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.api.entity.MetadataHeader; import com.inspur.edp.web.common.entity.ResultCode; import com.inspur.edp.web.common.entity.ResultMessage; import com.inspur.edp.web.common.io.FileUtility; +import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.common.utility.RandomUtility; +import com.inspur.edp.web.common.utility.StringUtility; +import com.inspur.edp.web.designschema.elements.Schema; +import com.inspur.edp.web.designschema.generator.SchemaBuilder; +import com.inspur.edp.web.dynamicform.core.api.customexception.DynamicFormException; import com.inspur.edp.web.dynamicform.core.api.entity.DynamicCreateFormMetadataParameter; import com.inspur.edp.web.dynamicform.core.api.entity.FormMetadataInfo; +import com.inspur.edp.web.dynamicform.core.api.entity.FormMetadataTemplateInfo; import com.inspur.edp.web.dynamicform.core.api.service.DynamicCreateFormMetadataService; import com.inspur.edp.web.formmetadata.metadata.FormMetadataContent; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; @@ -39,6 +47,9 @@ import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMetadataService { @Override public ResultMessage create(DynamicCreateFormMetadataParameter parameter) { + // 入参校验 主要针对需要必须填写的内容进行验证 + this.createParameterValidate(parameter); + ResultMessage resultMessage = ResultCode.success(); @@ -55,16 +66,39 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe metadataHeader.setId(RandomUtility.newGuid()); metadataHeader.setNameSpace(parameter.getProjectNameSpace()); metadataHeader.setBizobjectID(parameter.getBizobjectID()); + metadataHeader.setType("Form"); formListMetadata.setHeader(metadataHeader); // 读取资源文件中模板信息 - String templateFilePath = FileUtility.combine(FileUtility.getServerRTPath(), "web\\platform\\dev\\main\\web\\webide\\plugins\\form-create-wizard\\assets\\templates\\form-template\\new-list-template.json"); + FormMetadataTemplateInfo formMetadataTemplateInfo = metadataInfoItem.getTemplateInfo(); + String templateFilePath = FileUtility.combine(FileUtility.getServerRTPath(), "web\\platform\\dev\\main\\web\\webide\\plugins\\form-create-wizard\\assets\\templates\\form-template\\" + formMetadataTemplateInfo.getTemplateId() + ".json"); String templateContent = FileUtility.readAsString(templateFilePath); FormMetadataContent formMetadataContent = new FormMetadataContent(); formMetadataContent.setId(metadataHeader.getId()); FormDOM formDOM = SerializeUtility.getInstance().deserialize(templateContent, FormDOM.class); + // 读取VO元数据 进行表单参数构造 + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(parameter.getVoMetadataId(), parameter.getProjectPath()); + GspMetadata voMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + IMetadataContent voMetaContent = voMetadata.getContent(); + GspViewModel gspViewModel = (GspViewModel) voMetaContent; + SchemaBuilder schemaBuilder = new SchemaBuilder(); + Schema schema = schemaBuilder.buildWithScene(gspViewModel, "", false); + + formDOM.getModule().setId(metadataInfoItem.getCode()); + formDOM.getModule().setCode(metadataInfoItem.getCode()); + formDOM.getModule().setName(metadataInfoItem.getName()); + formDOM.getModule().setCreator("Noah"); + formDOM.getModule().setCaption(metadataInfoItem.getName()); + formDOM.getModule().setType("Module"); + formDOM.getModule().setShowTitle(true); + formDOM.getModule().setBootstrap(metadataInfoItem.getTemplateInfo().getTemplateId()); + formDOM.getModule().setTemplateId(metadataInfoItem.getTemplateInfo().getTemplateId()); + + // 更新对应的schemas + + JsonNode contentNode = SerializeUtility.getInstance().toJsonNode(templateContent); formMetadataContent.setContents(contentNode); @@ -79,4 +113,39 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe return resultMessage; } + + /** + * 入参校验 + * + * @param parameter + */ + private void createParameterValidate(DynamicCreateFormMetadataParameter parameter) { + if (parameter == null) { + throw new DynamicFormException("表单创建入参不能为空"); + } + if (StringUtility.isNullOrEmpty(parameter.getProjectPath())) { + throw new DynamicFormException("表单创建入参,工程路径不能为空"); + } + if (StringUtility.isNullOrEmpty(parameter.getProjectCode())) { + throw new DynamicFormException("表单创建入参,工程code不能为空"); + } + + if (StringUtility.isNullOrEmpty(parameter.getVoMetadataId())) { + throw new DynamicFormException("表单创建入参,VO元数据id不能为空"); + } + + if (StringUtility.isNullOrEmpty(parameter.getEapiMetadataId())) { + throw new DynamicFormException("表单创建入参,Eapi元数据id不能为空"); + } + + if (StringUtility.isNullOrEmpty(parameter.getProjectNameSpace())) { + throw new DynamicFormException("表单创建入参,工程命名空间不能为空"); + } + + if (parameter.getFormMetadataInfoList() == null || parameter.getFormMetadataInfoList().isEmpty()) { + throw new DynamicFormException("表单创建入参,待创建的表单信息列表为空"); + } + + + } } diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java index 603b9ebb..2da62f1f 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java @@ -16,15 +16,50 @@ package com.inspur.edp.web.dynamicform.core.webservice; +import com.inspur.edp.web.common.entity.ResultCode; import com.inspur.edp.web.common.entity.ResultMessage; +import com.inspur.edp.web.dynamicform.core.api.entity.DynamicCreateFormMetadataParameter; +import com.inspur.edp.web.dynamicform.core.api.entity.FormMetadataInfo; +import com.inspur.edp.web.dynamicform.core.api.entity.FormMetadataTemplateInfo; +import com.inspur.edp.web.dynamicform.core.api.service.DynamicCreateFormMetadataService; +import com.inspur.edp.web.dynamicform.core.api.webservice.DynamicFormWebService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; /** * 动态创建表单 + * * @author guozhiqi */ -public class DynamicFormWebServiceImpl implements DynamicFormWebService{ +public class DynamicFormWebServiceImpl implements DynamicFormWebService { @Override public ResultMessage create() { + ResultMessage resultMessage = ResultCode.success(); + + + DynamicCreateFormMetadataService dynamicCreateFormMetadataService = SpringBeanUtils.getBean(DynamicCreateFormMetadataService.class); + DynamicCreateFormMetadataParameter parameter = new DynamicCreateFormMetadataParameter(); + + parameter.setBizobjectID("e52935d0-8956-2325-78d7-ecd19b9baab5"); + parameter.setEapiMetadataId("f7f92fba-a694-4196-b873-0be0efe4e711"); + parameter.setVoMetadataId("786cc264-6e93-4dc6-9ef0-8405d8b465df"); + parameter.setProjectCode("testaddproj"); + parameter.setProjectPath("testadd/testaddmodule/testaddproj/bo-testaddprojfront"); + parameter.setProjectNameSpace("Inspur.GS.testadd.testaddmodule.testaddproj"); + + FormMetadataInfo formMetadataInfo = new FormMetadataInfo(); + formMetadataInfo.setCode("testaddcreate1"); + formMetadataInfo.setName("testaddcreate1"); + + FormMetadataTemplateInfo formMetadataTemplateInfo = new FormMetadataTemplateInfo(); + // 列表使用的模板 new-list-template + // 卡片使用的模板 new-card-template + formMetadataTemplateInfo.setTemplateCode("new-list-template"); + formMetadataTemplateInfo.setTemplateName("new-list-template"); + formMetadataTemplateInfo.setTemplateId("new-list-template"); + formMetadataInfo.setTemplateInfo(formMetadataTemplateInfo); + + dynamicCreateFormMetadataService.create(parameter); + return resultMessage; } } diff --git a/web-dynamic-form-core/src/main/resources/META-INF/spring.factories b/web-dynamic-form-core/src/main/resources/META-INF/spring.factories index 2e050321..c89fdea6 100644 --- a/web-dynamic-form-core/src/main/resources/META-INF/spring.factories +++ b/web-dynamic-form-core/src/main/resources/META-INF/spring.factories @@ -1,2 +1,2 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -configuration.com.inspur.edp.web.dynamicform.core.DynamicFormConfiguration +com.inspur.edp.web.dynamicform.core.configuration.DynamicFormConfiguration diff --git a/web-dynamic-form-core/src/test/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImplTest.java b/web-dynamic-form-core/src/test/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImplTest.java new file mode 100644 index 00000000..0b7c7bd5 --- /dev/null +++ b/web-dynamic-form-core/src/test/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImplTest.java @@ -0,0 +1,33 @@ +/* + * 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.dynamicform.core.service; + +import com.inspur.edp.web.dynamicform.core.api.service.DynamicCreateFormMetadataService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class DynamicCreateFormMetadataServiceImplTest { + + @Test + public void testCreate() { + DynamicCreateFormMetadataService dynamicCreateFormMetadataService = SpringBeanUtils.getBean(DynamicCreateFormMetadataService.class); + + System.out.println("bubnu"); + } +} \ No newline at end of file -- Gitee From 9820c04620641b4004669eb555c49ad720e07dd1 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Fri, 24 Feb 2023 16:17:16 +0800 Subject: [PATCH 07/31] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=A1=A8=E5=8D=95=E5=85=83=E6=95=B0=E6=8D=AE?= =?UTF-8?q?project?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- toout.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/toout.bat b/toout.bat index fa619847..94916d86 100644 --- a/toout.bat +++ b/toout.bat @@ -54,8 +54,8 @@ COPY .\web-frontendproject-api\target\web-jitengine-frontendproject-api-%version COPY .\web-designschema\target\web-designschema-%version%.jar .\out\server\platform\common\libs\web-designschema.jar COPY .\web-designschema-api\target\web-designschema-api-%version%.jar .\out\server\platform\common\libs\web-designschema-api.jar -COPY .\web-dynamic-form-api\target\web-dynamicform-api-%version%.jar .\out\server\platform\common\libs\web-dynamic-form-api.jar -COPY .\web-dynamic-form-core\target\web-dynamic-form-core-%version%.jar .\out\server\platform\common\libs\web-dynamic-form-core.jar +COPY .\web-dynamic-form-api\target\web-dynamicform-api-%version%.jar .\out\server\platform\common\libs\web-dynamicform-api.jar +COPY .\web-dynamic-form-core\target\web-dynamicform-core-%version%.jar .\out\server\platform\common\libs\web-dynamicform-core.jar COPY .\web-pageflow-metadata\target\web-pageflow-metadata-%version%.jar .\out\server\platform\common\libs\web-pageflow-metadata.jar COPY .\web-statemachine\target\web-statemachine-metadata-%version%.jar .\out\server\platform\common\libs\web-statemachine-metadata.jar -- Gitee From 1d056a924c4c36fa0a7d85e0da78d09b347e1bab Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Fri, 24 Feb 2023 17:11:12 +0800 Subject: [PATCH 08/31] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E4=BC=A0=E9=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 26 +------------------ toout.bat | 16 ------------ .../DynamicCreateFormMetadataServiceImpl.java | 7 +++-- .../webservice/DynamicFormWebServiceImpl.java | 2 +- xpath0.1.bat | 16 ------------ 5 files changed, 5 insertions(+), 62 deletions(-) diff --git a/pom.xml b/pom.xml index 1c885a88..9a668590 100644 --- a/pom.xml +++ b/pom.xml @@ -22,31 +22,7 @@ web-common web-form-metadata-api web-form-metadata - web-sourcecode-metadata - web-pageflow-metadata - web-appconfig-api - web-appconfig-core - web-frontendproject - web-frontendproject-api - web-form-jitengine - web-designschema - web-designschema-api - web-statemachine - web-tsfile-api - web-tsfile-core - web-ide-api - web-ide-webapi - runtime-api - runtime-core - runtime-scriptcache - runtime-scriptcache-api - jitengine-web-api - jitengine-web-core - web-approval-format-api - web-approval-format-core - web-npmpackage-core - web-npmpackage-api - web-npmpackage-patch + web-dynamic-form-api web-dynamic-form-core diff --git a/toout.bat b/toout.bat index 94916d86..fc3fac75 100644 --- a/toout.bat +++ b/toout.bat @@ -1,19 +1,3 @@ -# -# 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. -# - @echo off for /f "tokens=*" %%i in ('CALL .\xpath0.1.bat pom.xml "/project/properties/custom.version"') do set version=%%i diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java index 9d425c1e..0401ea3d 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java @@ -53,7 +53,7 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe ResultMessage resultMessage = ResultCode.success(); - String formMetadataRelativePath = FileUtility.combine(parameter.getProjectPath(), "metadata", "components"); + String formMetadataRelativePath = FileUtility.getPlatformIndependentPath(FileUtility.combine(parameter.getProjectPath(), "metadata", "components")); // 此处应该可能存在同时多个表单创建的情况 此处先使用第一个 if (!parameter.getFormMetadataInfoList().isEmpty()) { for (FormMetadataInfo metadataInfoItem : parameter.getFormMetadataInfoList()) { @@ -72,14 +72,14 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe // 读取资源文件中模板信息 FormMetadataTemplateInfo formMetadataTemplateInfo = metadataInfoItem.getTemplateInfo(); - String templateFilePath = FileUtility.combine(FileUtility.getServerRTPath(), "web\\platform\\dev\\main\\web\\webide\\plugins\\form-create-wizard\\assets\\templates\\form-template\\" + formMetadataTemplateInfo.getTemplateId() + ".json"); + String templateFilePath = FileUtility.getPlatformIndependentPath(FileUtility.combine(FileUtility.getCurrentWorkPath(false), "web\\platform\\dev\\main\\web\\webide\\plugins\\form-create-wizard\\assets\\templates\\form-template\\" + formMetadataTemplateInfo.getTemplateId() + ".json")); String templateContent = FileUtility.readAsString(templateFilePath); FormMetadataContent formMetadataContent = new FormMetadataContent(); formMetadataContent.setId(metadataHeader.getId()); FormDOM formDOM = SerializeUtility.getInstance().deserialize(templateContent, FormDOM.class); // 读取VO元数据 进行表单参数构造 - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(parameter.getVoMetadataId(), parameter.getProjectPath()); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(parameter.getVoMetadataId(), FileUtility.getPlatformIndependentPath(parameter.getProjectPath())); GspMetadata voMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); IMetadataContent voMetaContent = voMetadata.getContent(); GspViewModel gspViewModel = (GspViewModel) voMetaContent; @@ -99,7 +99,6 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe // 更新对应的schemas - JsonNode contentNode = SerializeUtility.getInstance().toJsonNode(templateContent); formMetadataContent.setContents(contentNode); diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java index 2da62f1f..4b583f23 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java @@ -57,7 +57,7 @@ public class DynamicFormWebServiceImpl implements DynamicFormWebService { formMetadataTemplateInfo.setTemplateName("new-list-template"); formMetadataTemplateInfo.setTemplateId("new-list-template"); formMetadataInfo.setTemplateInfo(formMetadataTemplateInfo); - + parameter.getFormMetadataInfoList().add(formMetadataInfo); dynamicCreateFormMetadataService.create(parameter); return resultMessage; diff --git a/xpath0.1.bat b/xpath0.1.bat index 4b091631..630822c9 100644 --- a/xpath0.1.bat +++ b/xpath0.1.bat @@ -1,19 +1,3 @@ -# -# 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. -# - @if (@X)==(@Y) @end /* JScript comment @echo off -- Gitee From ab88bc9de966bb33c6c151abb26aab30deed7227 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Fri, 24 Feb 2023 17:26:07 +0800 Subject: [PATCH 09/31] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E5=B7=A5=E7=A8=8B=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/service/DynamicCreateFormMetadataServiceImpl.java | 2 +- .../dynamicform/core/webservice/DynamicFormWebServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java index 0401ea3d..98e20ed5 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java @@ -53,7 +53,7 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe ResultMessage resultMessage = ResultCode.success(); - String formMetadataRelativePath = FileUtility.getPlatformIndependentPath(FileUtility.combine(parameter.getProjectPath(), "metadata", "components")); + String formMetadataRelativePath = FileUtility.getPlatformIndependentPath(FileUtility.combine(parameter.getProjectPath(), "components")); // 此处应该可能存在同时多个表单创建的情况 此处先使用第一个 if (!parameter.getFormMetadataInfoList().isEmpty()) { for (FormMetadataInfo metadataInfoItem : parameter.getFormMetadataInfoList()) { diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java index 4b583f23..809e223c 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java @@ -43,7 +43,7 @@ public class DynamicFormWebServiceImpl implements DynamicFormWebService { parameter.setEapiMetadataId("f7f92fba-a694-4196-b873-0be0efe4e711"); parameter.setVoMetadataId("786cc264-6e93-4dc6-9ef0-8405d8b465df"); parameter.setProjectCode("testaddproj"); - parameter.setProjectPath("testadd/testaddmodule/testaddproj/bo-testaddprojfront"); + parameter.setProjectPath("testadd/testaddmodule/testaddproj/bo-testaddprojfront/metadata"); parameter.setProjectNameSpace("Inspur.GS.testadd.testaddmodule.testaddproj"); FormMetadataInfo formMetadataInfo = new FormMetadataInfo(); -- Gitee From 638030fab000e2313a8566637b9f98cb3a17c209 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Mon, 6 Mar 2023 19:48:54 +0800 Subject: [PATCH 10/31] =?UTF-8?q?=E6=97=A5=E5=8E=86=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E6=8F=90=E5=8F=96placeTitle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 26 ++- .../edp/web/common/utility/DateUtility.java | 50 +++++ .../web/common/utility/JsonNodeUtility.java | 87 ++++++++ .../edp/web/common/utility/RandomUtility.java | 10 + .../web/common/utility/RandomUtilityTest.java | 11 +- .../edp/web/designschema/elements/Schema.java | 1 + .../api/entity/FormMetadataTemplateInfo.java | 9 + web-dynamic-form-core/pom.xml | 4 + .../core/components/ComponentBinding.java | 27 +++ .../GridFieldComponentMetadata.java | 67 ++++++ .../DynamicCreateFormMetadataServiceImpl.java | 150 ++++++++++++- .../core/statemachine/CardStateMachine.java | 197 ++++++++++++++++++ .../core/statemachine/ListStateMachine.java | 95 +++++++++ .../StateMachineMetadataGenerator.java | 97 +++++++++ .../webservice/DynamicFormWebServiceImpl.java | 15 +- .../GridFieldComponentMetadataTest.java | 32 +++ .../i18n/component/ComponentUtility.java | 5 + .../I18nResourceStrategyFactory.java | 1 + .../AppointmentCalendarResourceStrategy.java | 59 ++++++ .../i18n/constant/ComponentType.java | 5 + .../StateMachineMetadataContentTest.java | 34 +++ 21 files changed, 972 insertions(+), 10 deletions(-) create mode 100644 web-common/src/main/java/com/inspur/edp/web/common/utility/DateUtility.java create mode 100644 web-common/src/main/java/com/inspur/edp/web/common/utility/JsonNodeUtility.java create mode 100644 web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/ComponentBinding.java create mode 100644 web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/GridFieldComponentMetadata.java create mode 100644 web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/CardStateMachine.java create mode 100644 web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/ListStateMachine.java create mode 100644 web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/StateMachineMetadataGenerator.java create mode 100644 web-dynamic-form-core/src/test/java/com/inspur/edp/web/dynamicform/core/components/GridFieldComponentMetadataTest.java create mode 100644 web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/AppointmentCalendarResourceStrategy.java create mode 100644 web-statemachine/src/test/java/com/inspur/edp/web/statemachine/metadata/StateMachineMetadataContentTest.java diff --git a/pom.xml b/pom.xml index 9a668590..1c885a88 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,31 @@ web-common web-form-metadata-api web-form-metadata - + web-sourcecode-metadata + web-pageflow-metadata + web-appconfig-api + web-appconfig-core + web-frontendproject + web-frontendproject-api + web-form-jitengine + web-designschema + web-designschema-api + web-statemachine + web-tsfile-api + web-tsfile-core + web-ide-api + web-ide-webapi + runtime-api + runtime-core + runtime-scriptcache + runtime-scriptcache-api + jitengine-web-api + jitengine-web-core + web-approval-format-api + web-approval-format-core + web-npmpackage-core + web-npmpackage-api + web-npmpackage-patch web-dynamic-form-api web-dynamic-form-core diff --git a/web-common/src/main/java/com/inspur/edp/web/common/utility/DateUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/utility/DateUtility.java new file mode 100644 index 00000000..5354d003 --- /dev/null +++ b/web-common/src/main/java/com/inspur/edp/web/common/utility/DateUtility.java @@ -0,0 +1,50 @@ +/* + * 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.common.utility; + +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.Date; + +/** + * 日期转换 + * + * @author guozhiqi + */ +public class DateUtility { + /** + * 将LocalDateTime转换成为Date格式 + * + * @param localDateTime + * @return + */ + public static Date convertFromLocalDateTime(LocalDateTime localDateTime) { + Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); + return date; + } + + /** + * 获取当前的默认时间 格式为 yyyy-MM-dd HH:mm:ss + * + * @return + */ + public static String getCurrentDateTime() { + return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + } +} diff --git a/web-common/src/main/java/com/inspur/edp/web/common/utility/JsonNodeUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/utility/JsonNodeUtility.java new file mode 100644 index 00000000..ee33bfe1 --- /dev/null +++ b/web-common/src/main/java/com/inspur/edp/web/common/utility/JsonNodeUtility.java @@ -0,0 +1,87 @@ +/* + * 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.common.utility; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.JSONPath; +import com.fasterxml.jackson.databind.JsonNode; + +import java.util.function.Consumer; + +/** + * JsonNode function utility + * + * @author guozhiqi + */ +public class JsonNodeUtility { + /** + * 递归查找contents节点下的对应节点内容 + * + * @param jsonArray + * @param functionAction + */ + public static void rescureContents(JSONArray jsonArray, Consumer functionAction) { + rescureWithSpecificTag(jsonArray, "contents", functionAction); + } + + /** + * 依据子节点标识进行递归 + * + * @param jsonArray + * @param functionAction + */ + public static void rescureWithSpecificTag(JSONArray jsonArray, String childTag, Consumer functionAction) { + if (jsonArray == null || jsonArray.size() == 0) { + return; + } + if (StringUtility.isNullOrEmpty(childTag)) { + childTag = "contents"; + } + String finalChildTag = childTag; + jsonArray.forEach(jsonItem -> { + if (jsonItem instanceof JSONArray) { + JSONArray itemJsonArray = (JSONArray) jsonItem; + rescureContents(itemJsonArray, functionAction); + } else if (jsonItem instanceof JSONObject) { + JSONObject jsonObjectItem = (JSONObject) jsonItem; + + // 执行回调 + functionAction.accept(jsonObjectItem); + + if (jsonObjectItem.get(finalChildTag) instanceof JSONArray) { + JSONArray contentsJsonArray = (JSONArray) jsonObjectItem.get(finalChildTag); + rescureContents(contentsJsonArray, functionAction); + } + } + }); + } + + /** + * 查找指定属性名称 + * @param sourceNode + * @param attributeName + * @return + */ + public static JSONArray findAll(JsonNode sourceNode, String attributeName) { + if (sourceNode == null || StringUtility.isNullOrEmpty(attributeName)) { + return new JSONArray(); + } + + return (JSONArray) JSONPath.extract(sourceNode.toString(), "$.." + attributeName); + } +} diff --git a/web-common/src/main/java/com/inspur/edp/web/common/utility/RandomUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/utility/RandomUtility.java index f8c623e1..ea9f470f 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/utility/RandomUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/utility/RandomUtility.java @@ -20,6 +20,7 @@ import java.util.UUID; /** * 随机数构造器 + * * @author guozhiqi */ public class RandomUtility { @@ -34,4 +35,13 @@ public class RandomUtility { public static String newGuid() { return UUID.randomUUID().toString(); } + + /** + * 指定长度的GUID + * @param length + * @return + */ + public static String newGuid(int length) { + return UUID.randomUUID().toString().substring(0, length); + } } diff --git a/web-common/src/test/java/com/inspur/edp/web/common/utility/RandomUtilityTest.java b/web-common/src/test/java/com/inspur/edp/web/common/utility/RandomUtilityTest.java index c860cc0d..88577400 100644 --- a/web-common/src/test/java/com/inspur/edp/web/common/utility/RandomUtilityTest.java +++ b/web-common/src/test/java/com/inspur/edp/web/common/utility/RandomUtilityTest.java @@ -8,8 +8,17 @@ public class RandomUtilityTest { @Test public void testUUID() { String result = RandomUtility.newGuid(); - assertEquals(result.length(),36); + assertEquals(result.length(), 36); System.out.println(result); System.out.println(result.length()); } + + @Test + public void newGuid() { + System.out.println(RandomUtility.newGuid(4)); + } + + @Test + public void testNewGuid() { + } } \ No newline at end of file diff --git a/web-designschema/src/main/java/com/inspur/edp/web/designschema/elements/Schema.java b/web-designschema/src/main/java/com/inspur/edp/web/designschema/elements/Schema.java index 85f8395c..251a1f3d 100644 --- a/web-designschema/src/main/java/com/inspur/edp/web/designschema/elements/Schema.java +++ b/web-designschema/src/main/java/com/inspur/edp/web/designschema/elements/Schema.java @@ -23,6 +23,7 @@ import java.util.*; /** * 表单Schema元素 + * @author guozhiqi */ @Data public class Schema { diff --git a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataTemplateInfo.java b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataTemplateInfo.java index 9bf346dc..57a4ef6e 100644 --- a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataTemplateInfo.java +++ b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataTemplateInfo.java @@ -18,6 +18,8 @@ package com.inspur.edp.web.dynamicform.core.api.entity; import lombok.Data; +import java.util.Objects; + /** * 表单关联的模板信息 * @@ -39,4 +41,11 @@ public class FormMetadataTemplateInfo { */ private String templateName; + /** + * 是否使用列表模板 + * @return + */ + public boolean isListTemplate(){ + return Objects.equals(this.templateId,"new-list-template"); + } } diff --git a/web-dynamic-form-core/pom.xml b/web-dynamic-form-core/pom.xml index 4514dbb2..02f76075 100644 --- a/web-dynamic-form-core/pom.xml +++ b/web-dynamic-form-core/pom.xml @@ -45,6 +45,10 @@ com.inspur.edp web-jitengine-formmetadata + + com.inspur.edp + web-statemachine-metadata + \ No newline at end of file diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/ComponentBinding.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/ComponentBinding.java new file mode 100644 index 00000000..56e45150 --- /dev/null +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/ComponentBinding.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.dynamicform.core.components; + +import lombok.Data; + +@Data +public class ComponentBinding { + private String type; + private String path; + private String field; + private String fullPath; +} diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/GridFieldComponentMetadata.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/GridFieldComponentMetadata.java new file mode 100644 index 00000000..8422d212 --- /dev/null +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/GridFieldComponentMetadata.java @@ -0,0 +1,67 @@ +/* + * 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.dynamicform.core.components; + +import com.fasterxml.jackson.databind.JsonNode; +import com.inspur.edp.web.common.serialize.SerializeUtility; + +import java.util.HashMap; + +public class GridFieldComponentMetadata { + public static HashMap getDefaultGridFieldMetadata() { + return SerializeUtility.getInstance().deserialize("{\n" + + " \"id\": \"col\",\n" + + " \"type\": \"GridField\",\n" + + " \"controlSource\": \"Farris\",\n" + + " \"caption\": \"\",\n" + + " \"captionTemplate\": null,\n" + + " \"dataField\": \"\",\n" + + " \"dataType\": \"\",\n" + + " \"binding\": null,\n" + + " \"enumData\": null,\n" + + " \"appearance\": null,\n" + + " \"size\": {\n" + + " \"width\": 120\n" + + " },\n" + + " \"displayTemplate\": null,\n" + + " \"editor\": null,\n" + + " \"draggable\": false,\n" + + " \"frozen\": \"none\",\n" + + " \"sortable\": true,\n" + + " \"sortOrder\": null,\n" + + " \"resizeable\": true,\n" + + " \"aggregate\": { \"type\": \"none\", \"formatter\": { \"type\": \"none\" } },\n" + + " \"groupAggregate\": { \"type\": \"none\", \"formatter\": { \"type\": \"none\" } },\n" + + " \"styler\": \"\",\n" + + " \"colTemplate\": \"\",\n" + + " \"linkedLabelEnabled\": false,\n" + + " \"linkedLabelClick\": null,\n" + + " \"textAlign\": \"left\",\n" + + " \"hAlign\": \"left\",\n" + + " \"vAlign\": \"middle\",\n" + + " \"formatter\": { \"type\": \"none\" },\n" + + " \"showTips\": false,\n" + + " \"tipContent\": null,\n" + + " \"multiLanguage\": false,\n" + + " \"enableFilter\": false,\n" + + " \"headerStyler\": \"\",\n" + + " \"localization\": false,\n" + + " \"idField\": \"value\",\n" + + " \"textField\": \"name\"\n" + + " }", HashMap.class); + } +} diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java index 98e20ed5..0652ec50 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java @@ -27,8 +27,10 @@ import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; +import com.inspur.edp.web.common.utility.DateUtility; import com.inspur.edp.web.common.utility.RandomUtility; import com.inspur.edp.web.common.utility.StringUtility; +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.dynamicform.core.api.customexception.DynamicFormException; @@ -36,8 +38,17 @@ import com.inspur.edp.web.dynamicform.core.api.entity.DynamicCreateFormMetadataP import com.inspur.edp.web.dynamicform.core.api.entity.FormMetadataInfo; import com.inspur.edp.web.dynamicform.core.api.entity.FormMetadataTemplateInfo; import com.inspur.edp.web.dynamicform.core.api.service.DynamicCreateFormMetadataService; +import com.inspur.edp.web.dynamicform.core.components.ComponentBinding; +import com.inspur.edp.web.dynamicform.core.components.GridFieldComponentMetadata; +import com.inspur.edp.web.dynamicform.core.statemachine.StateMachineMetadataGenerator; import com.inspur.edp.web.formmetadata.metadata.FormMetadataContent; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; +import com.inspur.edp.web.formmetadata.metadata.formdom.FormOptions; + +import java.time.LocalDateTime; +import java.util.*; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Consumer; /** * 动态创建表单 @@ -53,7 +64,7 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe ResultMessage resultMessage = ResultCode.success(); - String formMetadataRelativePath = FileUtility.getPlatformIndependentPath(FileUtility.combine(parameter.getProjectPath(), "components")); + String formMetadataRelativePath = FileUtility.getPlatformIndependentPath(FileUtility.combine(parameter.getProjectPath(), "components")); // 此处应该可能存在同时多个表单创建的情况 此处先使用第一个 if (!parameter.getFormMetadataInfoList().isEmpty()) { for (FormMetadataInfo metadataInfoItem : parameter.getFormMetadataInfoList()) { @@ -77,6 +88,10 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe FormMetadataContent formMetadataContent = new FormMetadataContent(); formMetadataContent.setId(metadataHeader.getId()); + formMetadataContent.setCode(metadataInfoItem.getCode()); + formMetadataContent.setName(metadataInfoItem.getName()); + formMetadataContent.setCreationDate(DateUtility.convertFromLocalDateTime(LocalDateTime.now())); + FormDOM formDOM = SerializeUtility.getInstance().deserialize(templateContent, FormDOM.class); // 读取VO元数据 进行表单参数构造 MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(parameter.getVoMetadataId(), FileUtility.getPlatformIndependentPath(parameter.getProjectPath())); @@ -85,25 +100,136 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe GspViewModel gspViewModel = (GspViewModel) voMetaContent; SchemaBuilder schemaBuilder = new SchemaBuilder(); Schema schema = schemaBuilder.buildWithScene(gspViewModel, "", false); + schema.setId(voMetadata.getHeader().getId()); + + List schemaList = new ArrayList() {{ + this.add(schema); + }}; + + String serializedSchema = SerializeUtility.getInstance().serialize(schemaList); + ArrayList> deserializedSchema = SerializeUtility.getInstance().deserialize(serializedSchema, ArrayList.class); + formDOM.getModule().setSchemas(deserializedSchema); formDOM.getModule().setId(metadataInfoItem.getCode()); formDOM.getModule().setCode(metadataInfoItem.getCode()); formDOM.getModule().setName(metadataInfoItem.getName()); formDOM.getModule().setCreator("Noah"); + formDOM.getModule().setCreationDate(DateUtility.getCurrentDateTime()); formDOM.getModule().setCaption(metadataInfoItem.getName()); formDOM.getModule().setType("Module"); formDOM.getModule().setShowTitle(true); formDOM.getModule().setBootstrap(metadataInfoItem.getTemplateInfo().getTemplateId()); formDOM.getModule().setTemplateId(metadataInfoItem.getTemplateInfo().getTemplateId()); - // 更新对应的schemas + // 设置扩展信息 + formDOM.setOptions(new FormOptions() { + { + this.setEnableTextArea(true); + this.setRenderMode("compile"); + } + }); + + // 状态机元数据保存 + StateMachineMetadataGenerator.saveStateMachineAndRefreshForm(parameter, formMetadataRelativePath, metadataInfoItem, formListMetadata, formDOM); + + + if (formDOM.getModule().getComponents() != null) { + + formDOM.getModule().getComponents().forEach(componentItem -> { + if (Objects.equals(componentItem.get("id"), "root-component")) { + componentItem.put("onInit", "Filter1"); + } + + this.rescureHashMapWithContents(componentItem, (childItem) -> { + if (Objects.equals(childItem.get("id"), "header-title-container") && childItem.get("contents") instanceof ArrayList) { + ArrayList> headerTitleContainerContents = (ArrayList>) childItem.get("contents"); + headerTitleContainerContents.forEach(headerItem -> { + if (Objects.equals(headerItem.get("type"), "HtmlTemplate")) { + String strHeaderHtml = headerItem.get("html").toString(); + strHeaderHtml = strHeaderHtml.replace("${title}", metadataInfoItem.getName()); + headerItem.put("html", strHeaderHtml); + } + }); + } + + if (metadataInfoItem.getTemplateInfo().isListTemplate() && + Objects.equals(childItem.get("id"), "dataGrid")) { + // 选中对应的列表 + childItem.computeIfPresent("fields", (k, v) -> new ArrayList()); + + // 仅限于单列表处理 向列表添加属性参数 + schema.getEntities().stream().findFirst().ifPresent(mainEntity -> { + List fieldList = mainEntity.getType().getFields(); + fieldList.forEach(fieldItem -> { + HashMap defaultGridMetadatMetadata = GridFieldComponentMetadata.getDefaultGridFieldMetadata(); + + String generatedMetadataId = fieldItem.getId().length() > 8 ? fieldItem.getId().substring(0, 8) : fieldItem.getId(); + generatedMetadataId = fieldItem.getBindingField() + "_" + generatedMetadataId.replaceAll("-", "_") + "_" + RandomUtility.newGuid(4); + defaultGridMetadatMetadata.put("id", generatedMetadataId); + + defaultGridMetadatMetadata.put("caption", fieldItem.getName()); + defaultGridMetadatMetadata.put("dataField", fieldItem.getLabel()); + + ComponentBinding componentBinding = new ComponentBinding() {{ + this.setType("Form"); + this.setPath(fieldItem.getBindingField()); + this.setField(fieldItem.getId()); + this.setFullPath(fieldItem.getPath()); + + }}; + defaultGridMetadatMetadata.put("binding", componentBinding); + + ((ArrayList) childItem.get("fields")).add(defaultGridMetadatMetadata); + }); + }); + + Optional dataGridViewModelOpt = formDOM.getModule().getviewmodels().stream().filter(t -> Objects.equals(t.get("id"), "data-grid-component-viewmodel")).findFirst(); + dataGridViewModelOpt.ifPresent(dataGridViewModelItem -> { + HashMap hashMapViewModelItem = (HashMap) dataGridViewModelItem; + ((HashMap) dataGridViewModelItem).put("bindTo", "/"); + List> viewModelFieldList = new ArrayList<>(); + schema.getEntities().stream().findFirst().ifPresent(t -> { + t.getType().getFields().forEach(schemaFieldItem -> { + HashMap hashMapSchemaField = new HashMap<>(); + hashMapSchemaField.put("type", "Form"); + hashMapSchemaField.put("id", schemaFieldItem.getId()); + hashMapSchemaField.put("fieldName", schemaFieldItem.getBindingField()); + hashMapSchemaField.put("groupId", null); + hashMapSchemaField.put("groupName", null); + viewModelFieldList.add(hashMapSchemaField); + }); + }); + hashMapViewModelItem.put("fields", viewModelFieldList); + }); + } + + + if (Objects.equals(childItem.get("id"), "query-scheme-section")) { + ArrayList> querySchemaSectionContents = (ArrayList>) childItem.get("contents"); + querySchemaSectionContents.forEach(contentItem -> { + contentItem.put("formId", metadataInfoItem.getCode()); + + contentItem.put("presetQuerySolutionName", "默认筛选方案"); + contentItem.put("fieldConfigs", schema.getEntities().stream().findFirst().get().getType().getFields()); + contentItem.put("presetFieldConfigs", schema.getEntities().stream().findFirst().get().getType().getFields()); + }); + } + + + }); + + }); + } + + // 更新对应的schemas + String generatedFormDom = SerializeUtility.getInstance().serialize(formDOM); + JsonNode contentNode = SerializeUtility.getInstance().toJsonNode(generatedFormDom); - JsonNode contentNode = SerializeUtility.getInstance().toJsonNode(templateContent); formMetadataContent.setContents(contentNode); formListMetadata.setContent(formMetadataContent); - + formListMetadata.setRefs(new ArrayList<>()); // 保存对应的表单元数据 MetadataUtility.getInstance().saveMetadata(formListMetadata); } @@ -113,6 +239,21 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe return resultMessage; } + + private void rescureHashMapWithContents(HashMap sourceHashMap, Consumer> sourceItemConsumerAction) { + if (sourceHashMap != null && !sourceHashMap.isEmpty()) { + sourceItemConsumerAction.accept(sourceHashMap); + + if (sourceHashMap.get("contents") instanceof ArrayList) { + ArrayList> contentList = (ArrayList>) sourceHashMap.get("contents"); + contentList.forEach(contentItem -> { + this.rescureHashMapWithContents(contentItem, sourceItemConsumerAction); + }); + } + } + } + + /** * 入参校验 * @@ -147,4 +288,5 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe } + } diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/CardStateMachine.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/CardStateMachine.java new file mode 100644 index 00000000..75564500 --- /dev/null +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/CardStateMachine.java @@ -0,0 +1,197 @@ +/* + * 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.dynamicform.core.statemachine; + +/** + * 卡片对应状态机 + * @author guozhiqi + */ +public class CardStateMachine { + public static String getContent(){ + return "{\n" + + " \"renderState\": {\n" + + " \"canAdd\": {\n" + + " \"condition\": [{\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"init\",\n" + + " \"relation\": \"\",\n" + + " \"rBracket\": \"\"\n" + + " }],\n" + + " \"name\": \"新增\",\n" + + " \"description\": \"\"\n" + + " },\n" + + " \"canEdit\": {\n" + + " \"condition\": [{\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"init\",\n" + + " \"relation\": \"\",\n" + + " \"rBracket\": \"\"\n" + + " }],\n" + + " \"name\": \"编辑\",\n" + + " \"description\": \"\"\n" + + " },\n" + + " \"canCancel\": {\n" + + " \"condition\": [{\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"add\",\n" + + " \"relation\": \"or\",\n" + + " \"rBracket\": \"\"\n" + + " }, {\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"edit\",\n" + + " \"relation\": \"\",\n" + + " \"rBracket\": \"\"\n" + + " }],\n" + + " \"name\": \"取消\",\n" + + " \"description\": \"\"\n" + + " },\n" + + " \"canSave\": {\n" + + " \"condition\": [{\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"add\",\n" + + " \"relation\": \"or\",\n" + + " \"rBracket\": \"\"\n" + + " }, {\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"edit\",\n" + + " \"relation\": \"\",\n" + + " \"rBracket\": \"\"\n" + + " }],\n" + + " \"name\": \"保存\",\n" + + " \"description\": \"\"\n" + + " },\n" + + " \"canRemove\": {\n" + + " \"condition\": [{\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"init\",\n" + + " \"relation\": \"\",\n" + + " \"rBracket\": \"\"\n" + + " }],\n" + + " \"name\": \"删除\",\n" + + " \"description\": \"\"\n" + + " },\n" + + " \"canAddDetail\": {\n" + + " \"condition\": [{\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"add\",\n" + + " \"relation\": \"or\",\n" + + " \"rBracket\": \"\"\n" + + " }, {\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"edit\",\n" + + " \"relation\": \"\",\n" + + " \"rBracket\": \"\"\n" + + " }],\n" + + " \"name\": \"新增明细\",\n" + + " \"description\": \"\"\n" + + " },\n" + + " \"canRemoveDetail\": {\n" + + " \"condition\": [{\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"add\",\n" + + " \"relation\": \"or\",\n" + + " \"rBracket\": \"\"\n" + + " }, {\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"edit\",\n" + + " \"relation\": \"\",\n" + + " \"rBracket\": \"\"\n" + + " }],\n" + + " \"name\": \"删除明细\",\n" + + " \"description\": \"\"\n" + + " },\n" + + " \"editable\": {\n" + + " \"condition\": [{\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"add\",\n" + + " \"relation\": \"or\",\n" + + " \"rBracket\": \"\"\n" + + " }, {\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"edit\",\n" + + " \"relation\": \"\",\n" + + " \"rBracket\": \"\"\n" + + " }],\n" + + " \"name\": \"可编辑\",\n" + + " \"description\": \"\"\n" + + " }\n" + + " },\n" + + " \"state\": [{\n" + + " \"state\": \"add\",\n" + + " \"name\": \"新增\",\n" + + " \"description\": \"处于新增状态\"\n" + + " }, {\n" + + " \"state\": \"init\",\n" + + " \"name\": \"初始\",\n" + + " \"description\": \"处于初始状态\"\n" + + " }, {\n" + + " \"state\": \"edit\",\n" + + " \"name\": \"编辑\",\n" + + " \"description\": \"处于编辑状态\"\n" + + " }],\n" + + " \"initialState\": \"init\",\n" + + " \"action\": {\n" + + " \"Create\": {\n" + + " \"name\": \"创建\",\n" + + " \"transitTo\": \"add\",\n" + + " \"description\": \"新建并切换至新增状态\"\n" + + " },\n" + + " \"Edit\": {\n" + + " \"name\": \"编辑\",\n" + + " \"transitTo\": \"edit\",\n" + + " \"description\": \"编辑并切换至编辑状态\"\n" + + " },\n" + + " \"Cancel\": {\n" + + " \"name\": \"取消\",\n" + + " \"transitTo\": \"init\",\n" + + " \"description\": \"取消并切换至初始状态\"\n" + + " },\n" + + " \"Save\": {\n" + + " \"name\": \"保存\",\n" + + " \"transitTo\": \"init\",\n" + + " \"description\": \"保存并切换至初始状态\"\n" + + " }\n" + + " }\n" + + "}"; + } +} diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/ListStateMachine.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/ListStateMachine.java new file mode 100644 index 00000000..27f659b6 --- /dev/null +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/ListStateMachine.java @@ -0,0 +1,95 @@ +/* + * 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.dynamicform.core.statemachine; + +/** + * 获取列表模板对应的状态机定义 + * @author guozhiqi + */ +public class ListStateMachine { + public static String getContent(){ + return "{\n" + + " \"renderState\": {\n" + + " \"canAdd\": {\n" + + " \"condition\": [\n" + + " {\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"init\",\n" + + " \"relation\": \"\",\n" + + " \"rBracket\": \"\"\n" + + " }\n" + + " ],\n" + + " \"name\": \"新增\",\n" + + " \"description\": \"\"\n" + + " },\n" + + " \"canEdit\": {\n" + + " \"condition\": [\n" + + " {\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"init\",\n" + + " \"relation\": \"\",\n" + + " \"rBracket\": \"\"\n" + + " }\n" + + " ],\n" + + " \"name\": \"编辑\",\n" + + " \"description\": \"\"\n" + + " },\n" + + " \"canRemove\": {\n" + + " \"condition\": [\n" + + " {\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"init\",\n" + + " \"relation\": \"\",\n" + + " \"rBracket\": \"\"\n" + + " }\n" + + " ],\n" + + " \"name\": \"删除\",\n" + + " \"description\": \"\"\n" + + " },\n" + + " \"canView\": {\n" + + " \"condition\": [\n" + + " {\n" + + " \"lBracket\": \"\",\n" + + " \"source\": \"state\",\n" + + " \"compare\": \"===\",\n" + + " \"target\": \"init\",\n" + + " \"relation\": \"\",\n" + + " \"rBracket\": \"\"\n" + + " }\n" + + " ],\n" + + " \"name\": \"查看\",\n" + + " \"description\": \"是否允许查看\"\n" + + " }\n" + + " },\n" + + " \"state\": [{\n" + + " \"state\": \"init\",\n" + + " \"name\": \"初始\",\n" + + " \"description\": \"处于初始状态\"\n" + + " }\n" + + " ],\n" + + " \"initialState\": \"init\",\n" + + " \"action\": {\n" + + " }\n" + + "}"; + } +} diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/StateMachineMetadataGenerator.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/StateMachineMetadataGenerator.java new file mode 100644 index 00000000..52cc027e --- /dev/null +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/StateMachineMetadataGenerator.java @@ -0,0 +1,97 @@ +/* + * 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.dynamicform.core.statemachine; + +import com.inspur.edp.lcm.metadata.api.IMetadataContent; +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.MetadataHeader; +import com.inspur.edp.web.common.metadata.MetadataUtility; +import com.inspur.edp.web.common.utility.RandomUtility; +import com.inspur.edp.web.common.utility.StringUtility; +import com.inspur.edp.web.dynamicform.core.api.entity.DynamicCreateFormMetadataParameter; +import com.inspur.edp.web.dynamicform.core.api.entity.FormMetadataInfo; +import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; +import com.inspur.edp.web.statemachine.serializer.StateMachineTransferSerializer; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Optional; + +/** + * 状态机元数据构造 + * @author guozhiqi + */ +public class StateMachineMetadataGenerator { + /** + * 构造并保存状态机元数据 + * @param parameter + * @param formMetadataRelativePath + * @param metadataInfoItem + * @param formListMetadata + * @param formDOM + */ + public static void saveStateMachineAndRefreshForm(DynamicCreateFormMetadataParameter parameter, String formMetadataRelativePath, FormMetadataInfo metadataInfoItem, GspMetadata formListMetadata, FormDOM formDOM) { + GspMetadata smMetadata = new GspMetadata(); + MetadataHeader smMetadataHeader = new MetadataHeader(); + smMetadataHeader.setName(metadataInfoItem.getName()); + smMetadataHeader.setCode(metadataInfoItem.getCode()); + smMetadataHeader.setFileName(metadataInfoItem.getCode() + "_frm.sm"); + smMetadataHeader.setId(RandomUtility.newGuid()); + smMetadataHeader.setNameSpace(parameter.getProjectNameSpace()); + smMetadataHeader.setBizobjectID(parameter.getBizobjectID()); + smMetadataHeader.setType("StateMachine"); + smMetadata.setHeader(smMetadataHeader); + smMetadata.setRelativePath(formMetadataRelativePath); + Optional strStateMachineContent = getStateMachineContent(metadataInfoItem.getTemplateInfo().getTemplateId()); + // 保存对应的状态机元数据 + strStateMachineContent.ifPresent(smContent -> { + StateMachineTransferSerializer serializer = new StateMachineTransferSerializer(); + IMetadataContent smMetadataContent = serializer.deserialize(smContent); + smMetadata.setContent(smMetadataContent); + // 保存状态机元数据 + MetadataUtility.getInstance().saveMetadata(smMetadata); + + List> stateMachineList = new ArrayList<>(); + HashMap stateMachineMap = new HashMap<>(); + stateMachineMap.put("id", formListMetadata.getHeader().getCode() + "_state_machine"); + stateMachineMap.put("name", formListMetadata.getHeader().getName() + "状态机"); + stateMachineMap.put("uri", smMetadata.getHeader().getId()); + stateMachineList.add(stateMachineMap); + formDOM.getModule().setStateMachines((ArrayList>) stateMachineList); + + }); + } + + private static Optional getStateMachineContent(String templateId) { + if (StringUtility.isNullOrEmpty(templateId)) { + return Optional.empty(); + } + String strStateMachineContent = ""; + switch (templateId) { + case "newListForm": + strStateMachineContent = ListStateMachine.getContent(); + break; + case "newCardForm": + default: + strStateMachineContent = CardStateMachine.getContent(); + break; + } + return Optional.ofNullable(strStateMachineContent); + } + +} diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java index 809e223c..ac6487eb 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java @@ -18,6 +18,7 @@ package com.inspur.edp.web.dynamicform.core.webservice; import com.inspur.edp.web.common.entity.ResultCode; import com.inspur.edp.web.common.entity.ResultMessage; +import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.dynamicform.core.api.entity.DynamicCreateFormMetadataParameter; import com.inspur.edp.web.dynamicform.core.api.entity.FormMetadataInfo; import com.inspur.edp.web.dynamicform.core.api.entity.FormMetadataTemplateInfo; @@ -40,15 +41,17 @@ public class DynamicFormWebServiceImpl implements DynamicFormWebService { DynamicCreateFormMetadataParameter parameter = new DynamicCreateFormMetadataParameter(); parameter.setBizobjectID("e52935d0-8956-2325-78d7-ecd19b9baab5"); - parameter.setEapiMetadataId("f7f92fba-a694-4196-b873-0be0efe4e711"); - parameter.setVoMetadataId("786cc264-6e93-4dc6-9ef0-8405d8b465df"); + parameter.setEapiMetadataId("12c33fcd-efb5-497a-9c24-cb26abc684e0"); + parameter.setVoMetadataId("42d6388c-0d48-4722-9ef0-b45d2179f848"); parameter.setProjectCode("testaddproj"); parameter.setProjectPath("testadd/testaddmodule/testaddproj/bo-testaddprojfront/metadata"); parameter.setProjectNameSpace("Inspur.GS.testadd.testaddmodule.testaddproj"); FormMetadataInfo formMetadataInfo = new FormMetadataInfo(); - formMetadataInfo.setCode("testaddcreate1"); - formMetadataInfo.setName("testaddcreate1"); + formMetadataInfo.setCode("testaddcreate8"); + formMetadataInfo.setName("testaddcreate8"); + + FormMetadataTemplateInfo formMetadataTemplateInfo = new FormMetadataTemplateInfo(); // 列表使用的模板 new-list-template @@ -59,6 +62,10 @@ public class DynamicFormWebServiceImpl implements DynamicFormWebService { formMetadataInfo.setTemplateInfo(formMetadataTemplateInfo); parameter.getFormMetadataInfoList().add(formMetadataInfo); + // 为了方便调试 临时增加固定目录 + MetadataUtility.getInstance().getMetadataService().setMetadataUri("testadd/testaddmodule/testaddproj/bo-testaddprojfront/metadata"); + + dynamicCreateFormMetadataService.create(parameter); return resultMessage; } diff --git a/web-dynamic-form-core/src/test/java/com/inspur/edp/web/dynamicform/core/components/GridFieldComponentMetadataTest.java b/web-dynamic-form-core/src/test/java/com/inspur/edp/web/dynamicform/core/components/GridFieldComponentMetadataTest.java new file mode 100644 index 00000000..0eefea1b --- /dev/null +++ b/web-dynamic-form-core/src/test/java/com/inspur/edp/web/dynamicform/core/components/GridFieldComponentMetadataTest.java @@ -0,0 +1,32 @@ +/* + * 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.dynamicform.core.components; + +import org.junit.Test; + +import java.util.HashMap; + +import static org.junit.Assert.*; + +public class GridFieldComponentMetadataTest { + + @Test + public void getDefaultGridFieldMetadata() { + HashMap hashMap = GridFieldComponentMetadata.getDefaultGridFieldMetadata(); + System.out.println(hashMap.size()); + } +} \ No newline at end of file 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 6dbf8b35..4d5133f1 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 @@ -180,6 +180,7 @@ public class ComponentUtility { public final String getCaption(HashMap component) { return this.getValue(component, "caption"); } + public final String getCaptionTipContent(HashMap component) { return this.getValue(component, "captionTipContent"); } @@ -316,6 +317,9 @@ public class ComponentUtility { return getPlaceHolder(component, PLACE_HOLDER); } + public final String getPlaceTitle(HashMap component) { + return this.getValue(component, "placeTitle"); + } public final String getPlaceHolder(HashMap component, String placeHolder) { return this.getValue(component, placeHolder); @@ -448,6 +452,7 @@ public class ComponentUtility { return GetChildComponentCollection(component, "fieldConfigs"); } + public ArrayList> getDataGridContextMenu(HashMap component) { return GetChildComponentCollection(component, "contextMenuItems"); } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/I18nResourceStrategyFactory.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/I18nResourceStrategyFactory.java index c29c5a2f..4fa328dd 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/I18nResourceStrategyFactory.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/I18nResourceStrategyFactory.java @@ -85,6 +85,7 @@ public class I18nResourceStrategyFactory { //dicComponentStrategies.Add(ComponentType.TAGS, new TagsI18nResourceStrategy()); dicComponentStrategies.put(ComponentType.LIST_FILTER, new ListFilterI18nResourceStrategy()); + dicComponentStrategies.put(ComponentType.AppointmentCalendar, new AppointmentCalendarResourceStrategy()); dicComponentStrategies.put(ComponentType.COMBOLIST, new ComboListI18nResourceStrategy()); dicComponentStrategies.put(ComponentType.COMBOLOOKUP, new ComboLookupI18nResourceStrategy()); diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/AppointmentCalendarResourceStrategy.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/AppointmentCalendarResourceStrategy.java new file mode 100644 index 00000000..bfb4ef27 --- /dev/null +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/AppointmentCalendarResourceStrategy.java @@ -0,0 +1,59 @@ +/* + * 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.formmetadata.i18n.component.strategy.i18nresourcestrategy; + +import com.inspur.edp.lcm.metadata.api.entity.I18nResourceItem; +import com.inspur.edp.lcm.metadata.api.entity.I18nResourceItemCollection; +import com.inspur.edp.web.common.utility.StringUtility; +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 java.util.HashMap; + +/** + * 日历组件参数提取 + * + * @author guozhiqi + */ +public class AppointmentCalendarResourceStrategy extends AbstractI18nResourceStrategy { + + /** + * 参数提取 + * + * @param i18nResourceItemBaseId + * @param currentComponent + * @return + */ + @Override + protected I18nResourceItemCollection extractAttributeI18nResourceItemCollection(String i18nResourceItemBaseId, HashMap currentComponent) { + I18nResourceItemCollection i18nResourceItemCollection = new I18nResourceItemCollection(); + String currentComponentType = ComponentUtility.getInstance().getType(currentComponent); + String currentComponentId = ComponentUtility.getInstance().getId(currentComponent); + if (StringUtility.isNullOrEmpty(currentComponentType) || StringUtility.isNullOrEmpty(currentComponentId)) { + return null; + } + // 提取placeTitle参数 + String placeTitleValue = ComponentUtility.getInstance().getPlaceTitle(currentComponent); + String placeTitleName = "placeTitle"; + String generatedPlaceTitleComponentId = currentComponentType + "/" + currentComponentId + "/" + placeTitleName; + I18nResourceItem i18nPlaceholderResourceItem = I18nResourceItemManager.createI18nResourceItem(i18nResourceItemBaseId, generatedPlaceTitleComponentId, placeTitleValue, placeTitleValue); + i18nResourceItemCollection.add(i18nPlaceholderResourceItem); + + return i18nResourceItemCollection; + } +} diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/constant/ComponentType.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/constant/ComponentType.java index 894619c4..0b5f8bf1 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/constant/ComponentType.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/constant/ComponentType.java @@ -115,6 +115,11 @@ public class ComponentType { */ public static final String LIST_FILTER = "ListFilter"; + /** + * 日历组件 + */ + public static final String AppointmentCalendar = "AppointmentCalendar"; + /** * 数字框 */ diff --git a/web-statemachine/src/test/java/com/inspur/edp/web/statemachine/metadata/StateMachineMetadataContentTest.java b/web-statemachine/src/test/java/com/inspur/edp/web/statemachine/metadata/StateMachineMetadataContentTest.java new file mode 100644 index 00000000..2dec898c --- /dev/null +++ b/web-statemachine/src/test/java/com/inspur/edp/web/statemachine/metadata/StateMachineMetadataContentTest.java @@ -0,0 +1,34 @@ +/* + * 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.statemachine.metadata; + +import com.inspur.edp.web.common.serialize.SerializeUtility; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class StateMachineMetadataContentTest { + @Test + public void testSerialize() { + StateMachineMetadataContent smContent = new StateMachineMetadataContent(); + smContent.setInitialState("ffff"); + + String result = SerializeUtility.getInstance().serialize(smContent); + StateMachineMetadataContent deserializeSmContent=SerializeUtility.getInstance().deserialize(result, StateMachineMetadataContent.class); + + } +} \ No newline at end of file -- Gitee From 0a529cb120438251ec8f69a33d9f353d877bbd00 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Thu, 9 Mar 2023 16:40:19 +0800 Subject: [PATCH 11/31] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=A1=A8=E5=8D=95=E5=85=83=E6=95=B0=E6=8D=AE?= =?UTF-8?q?,=E9=92=88=E5=AF=B9=E7=8A=B6=E6=80=81=E6=9C=BA=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DynamicCreateFormMetadataParameter.java | 25 -- .../core/api/entity/FormMetadataInfo.java | 87 +++++++ .../api/entity/FormMetadataTemplateInfo.java | 13 +- web-dynamic-form-core/pom.xml | 4 + .../core/components/QuerySchemaField.java | 145 +++++++++++ .../DynamicCreateFormMetadataServiceImpl.java | 230 ++++++++++++++++-- .../core/statemachine/CardStateMachine.java | 26 +- .../core/statemachine/ListStateMachine.java | 8 +- .../StateMachineMetadataGenerator.java | 9 + .../webservice/DynamicFormWebServiceImpl.java | 30 ++- 10 files changed, 511 insertions(+), 66 deletions(-) create mode 100644 web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/QuerySchemaField.java diff --git a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/DynamicCreateFormMetadataParameter.java b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/DynamicCreateFormMetadataParameter.java index b0693861..662b3d0e 100644 --- a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/DynamicCreateFormMetadataParameter.java +++ b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/DynamicCreateFormMetadataParameter.java @@ -48,34 +48,9 @@ public class DynamicCreateFormMetadataParameter { */ private String bizobjectID; - /** - * eapi 元数据id - */ - private String eapiMetadataId; - /** - * eapi元数据code参数值 - */ - private String eapiMetadataCode; - /** - * eapi 元数据name参数值 - */ - private String eapiMetadataName; - /** - * vo元数据id - */ - private String voMetadataId; - - /** - * vo元数据code参数值 - */ - private String voMetadataCode; - /** - * vo元数据name参数值 - */ - private String voMetadataName; /** * 关联的表单信息列表 主要用于标识待创建的表单及其关联的模板信息 diff --git a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataInfo.java b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataInfo.java index 2b74db8d..3abae3ef 100644 --- a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataInfo.java +++ b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataInfo.java @@ -40,8 +40,95 @@ public class FormMetadataInfo { } + /** + * eapi 元数据id + */ + private String eapiMetadataId; + + /** + * eapi 暴露的uri地址 + */ + private String eapiSourceUri; + + /** + * eapi元数据code参数值 + */ + private String eapiMetadataCode; + /** + * eapi 元数据name参数值 + */ + private String eapiMetadataName; + /** + * vo元数据id + */ + private String voMetadataId; + + /** + * vo元数据code参数值 + */ + private String voMetadataCode; + /** + * vo元数据name参数值 + */ + private String voMetadataName; + + public String getEapiMetadataId() { + return eapiMetadataId; + } + + public void setEapiMetadataId(String eapiMetadataId) { + this.eapiMetadataId = eapiMetadataId; + } + + public String getEapiSourceUri() { + return eapiSourceUri; + } + + public void setEapiSourceUri(String eapiSourceUri) { + this.eapiSourceUri = eapiSourceUri; + } + + public String getEapiMetadataCode() { + return eapiMetadataCode; + } + + public void setEapiMetadataCode(String eapiMetadataCode) { + this.eapiMetadataCode = eapiMetadataCode; + } + + public String getEapiMetadataName() { + return eapiMetadataName; + } + + public void setEapiMetadataName(String eapiMetadataName) { + this.eapiMetadataName = eapiMetadataName; + } + + public String getVoMetadataId() { + return voMetadataId; + } + + public void setVoMetadataId(String voMetadataId) { + this.voMetadataId = voMetadataId; + } + + public String getVoMetadataCode() { + return voMetadataCode; + } + + public void setVoMetadataCode(String voMetadataCode) { + this.voMetadataCode = voMetadataCode; + } + + public String getVoMetadataName() { + return voMetadataName; + } + + public void setVoMetadataName(String voMetadataName) { + this.voMetadataName = voMetadataName; + } /** * 待创建表单的name参数值 diff --git a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataTemplateInfo.java b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataTemplateInfo.java index 57a4ef6e..593b9d82 100644 --- a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataTemplateInfo.java +++ b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/FormMetadataTemplateInfo.java @@ -43,9 +43,18 @@ public class FormMetadataTemplateInfo { /** * 是否使用列表模板 + * * @return */ - public boolean isListTemplate(){ - return Objects.equals(this.templateId,"new-list-template"); + public boolean isListTemplate() { + return Objects.equals(this.templateId, "new-list-template"); + } + + /** + * 是否卡片模板 + * @return + */ + public boolean isNewCardTemplate() { + return Objects.equals(this.templateId, "new-card-template"); } } diff --git a/web-dynamic-form-core/pom.xml b/web-dynamic-form-core/pom.xml index 02f76075..e8cb63c8 100644 --- a/web-dynamic-form-core/pom.xml +++ b/web-dynamic-form-core/pom.xml @@ -49,6 +49,10 @@ com.inspur.edp web-statemachine-metadata + + com.inspur.edp + web-pageflow-metadata + \ 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 new file mode 100644 index 00000000..c587daa2 --- /dev/null +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/QuerySchemaField.java @@ -0,0 +1,145 @@ +/* + * 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.dynamicform.core.components; + +import lombok.Data; + +import java.util.HashMap; + +/** + * 筛选方案字段 + * + * @author guozhiqi + */ +@Data +public class QuerySchemaField { + private String id; + private String labelCode; + private String code; + + private String name; + + private QuerySchemaFieldControl control; + + /** + * 从dom结构 构造对应的筛选方案字段 + * + * @param componentItem + * @return + */ + public static QuerySchemaField fromComponentItem(HashMap componentItem) { + QuerySchemaField querySchemaField = new QuerySchemaField(); + + return querySchemaField; + } + + + /** + * 筛选方案字段 control属性参数 + */ + @Data + public static class QuerySchemaFieldControl { + private String id; + private String controltype; + private boolean require; + private String className; + + } + + /** + * text field control + */ + public static class QuerySchemaTextFieldControl extends QuerySchemaFieldControl { + { + this.setControltype("text"); + this.setRequire(false); + this.setClassName(""); + } + } + + /** + * single-number control + */ + @Data + public static class QuerySchemaSingleNumberFieldControl extends QuerySchemaFieldControl { + { + this.setControltype("single-number"); + this.setRequire(false); + this.setClassName(""); + this.setTextAlign("left"); + } + + private String textAlign; + private double precision; + + private boolean isBigNumber; + } + + /** + * number field control + */ + @Data + public static class QuerySchemaNumberFieldControl extends QuerySchemaSingleNumberFieldControl { + { + this.setControltype("number"); + this.setRequire(false); + this.setClassName(""); + this.setTextAlign("left"); + } + } + + @Data + public static class QuerySchemaSingleDateFieldControl extends QuerySchemaFieldControl { + private String format; + + { + this.setControltype("single-date"); + this.setRequire(false); + this.setFormat("yyyy-MM-dd"); + } + } + + @Data + public static class QuerySchemaDateFieldControl extends QuerySchemaFieldControl { + private boolean weekSelect; + private String format; + + { + this.setControltype("date"); + this.setRequire(false); + this.setFormat("yyyy-MM-dd"); + this.setWeekSelect(false); + } + } + + @Data + public static class QuerySchemaDropdownFieldControl extends QuerySchemaFieldControl { + private String valueType; + private Object enumValues; + private boolean multiSelect; + private double panelHeight; + + { + this.setControltype("dropdown"); + this.setRequire(false); + this.setValueType("1"); + this.setClassName(""); + this.setMultiSelect(false); + } + + } +} diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java index 0652ec50..e2c42ed3 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java @@ -17,13 +17,20 @@ package com.inspur.edp.web.dynamicform.core.service; import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.JsonNodeFactory; +import com.fasterxml.jackson.databind.node.ObjectNode; import com.inspur.edp.formserver.viewmodel.GspViewModel; import com.inspur.edp.lcm.metadata.api.IMetadataContent; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.api.entity.MetadataHeader; +import com.inspur.edp.lcm.metadata.spi.event.MetadataEventArgs; +import com.inspur.edp.sgf.api.service.EapiMetadataDtService; import com.inspur.edp.web.common.entity.ResultCode; import com.inspur.edp.web.common.entity.ResultMessage; +import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.io.FileUtility; +import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; @@ -32,23 +39,27 @@ import com.inspur.edp.web.common.utility.RandomUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.designschema.elements.Field; import com.inspur.edp.web.designschema.elements.Schema; +import com.inspur.edp.web.designschema.elements.SimpleField; import com.inspur.edp.web.designschema.generator.SchemaBuilder; import com.inspur.edp.web.dynamicform.core.api.customexception.DynamicFormException; import com.inspur.edp.web.dynamicform.core.api.entity.DynamicCreateFormMetadataParameter; import com.inspur.edp.web.dynamicform.core.api.entity.FormMetadataInfo; import com.inspur.edp.web.dynamicform.core.api.entity.FormMetadataTemplateInfo; import com.inspur.edp.web.dynamicform.core.api.service.DynamicCreateFormMetadataService; +import com.inspur.edp.web.dynamicform.core.components.CardTemplateEditorGenerator; import com.inspur.edp.web.dynamicform.core.components.ComponentBinding; import com.inspur.edp.web.dynamicform.core.components.GridFieldComponentMetadata; +import com.inspur.edp.web.dynamicform.core.components.QuerySchemaField; import com.inspur.edp.web.dynamicform.core.statemachine.StateMachineMetadataGenerator; import com.inspur.edp.web.formmetadata.metadata.FormMetadataContent; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; import com.inspur.edp.web.formmetadata.metadata.formdom.FormOptions; +import com.inspur.edp.web.pageflow.metadata.service.PageFlowMetadataUpdateService; import java.time.LocalDateTime; import java.util.*; -import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; +import java.util.stream.Collectors; /** * 动态创建表单 @@ -94,13 +105,24 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe FormDOM formDOM = SerializeUtility.getInstance().deserialize(templateContent, FormDOM.class); // 读取VO元数据 进行表单参数构造 - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(parameter.getVoMetadataId(), FileUtility.getPlatformIndependentPath(parameter.getProjectPath())); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(metadataInfoItem.getVoMetadataId(), FileUtility.getPlatformIndependentPath(parameter.getProjectPath())); GspMetadata voMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); IMetadataContent voMetaContent = voMetadata.getContent(); GspViewModel gspViewModel = (GspViewModel) voMetaContent; SchemaBuilder schemaBuilder = new SchemaBuilder(); Schema schema = schemaBuilder.buildWithScene(gspViewModel, "", false); schema.setId(voMetadata.getHeader().getId()); + schema.setCode(metadataInfoItem.getCode()); + + // 设置对应eapi的sourceUri + // 如果未传递对应的sourceUri 那么使用当前表单进行自定义uri + if (StringUtility.isNullOrEmpty(metadataInfoItem.getEapiSourceUri())) { + String[] relativePathArr = formMetadataRelativePath.split("/"); + String strSourceUri = ("/api/" + relativePathArr[0] + "/" + relativePathArr[1] + "/v1.0/" + metadataInfoItem.getCode()).toLowerCase(); + schema.setSourceUri(strSourceUri); + } else { + schema.setSourceUri(metadataInfoItem.getEapiSourceUri()); + } List schemaList = new ArrayList() {{ this.add(schema); @@ -137,9 +159,16 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe formDOM.getModule().getComponents().forEach(componentItem -> { if (Objects.equals(componentItem.get("id"), "root-component")) { - componentItem.put("onInit", "Filter1"); + if (metadataInfoItem.getTemplateInfo().isListTemplate()) { + componentItem.put("onInit", "Filter1"); + } else if (metadataInfoItem.getTemplateInfo().isNewCardTemplate()) { + componentItem.put("onInit", "Load1"); + } } + // 当前的componentId + String currentComponentId = componentItem.get("id").toString(); + this.rescureHashMapWithContents(componentItem, (childItem) -> { if (Objects.equals(childItem.get("id"), "header-title-container") && childItem.get("contents") instanceof ArrayList) { ArrayList> headerTitleContainerContents = (ArrayList>) childItem.get("contents"); @@ -147,6 +176,8 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe if (Objects.equals(headerItem.get("type"), "HtmlTemplate")) { String strHeaderHtml = headerItem.get("html").toString(); strHeaderHtml = strHeaderHtml.replace("${title}", metadataInfoItem.getName()); + // 移除模板中的${formCode} 无效字符串 + strHeaderHtml = strHeaderHtml.replace("${formCode}", ""); headerItem.put("html", strHeaderHtml); } }); @@ -183,7 +214,8 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe }); }); - Optional dataGridViewModelOpt = formDOM.getModule().getviewmodels().stream().filter(t -> Objects.equals(t.get("id"), "data-grid-component-viewmodel")).findFirst(); + Optional dataGridViewModelOpt = formDOM.getModule().getviewmodels().stream().filter(t -> + Objects.equals(t.get("id"), "data-grid-component-viewmodel")).findFirst(); dataGridViewModelOpt.ifPresent(dataGridViewModelItem -> { HashMap hashMapViewModelItem = (HashMap) dataGridViewModelItem; ((HashMap) dataGridViewModelItem).put("bindTo", "/"); @@ -205,17 +237,176 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe } - if (Objects.equals(childItem.get("id"), "query-scheme-section")) { + if (metadataInfoItem.getTemplateInfo().isNewCardTemplate()) { + Optional basicFormViewModelOpt = formDOM.getModule().getviewmodels().stream().filter(t -> + Objects.equals(t.get("id"), "basic-form-viewmodel")).findFirst(); + basicFormViewModelOpt.ifPresent(basicFormViewModelItem -> { + HashMap hashMapViewModelItem = (HashMap) basicFormViewModelItem; + ((HashMap) basicFormViewModelItem).put("bindTo", "/"); + List> viewModelFieldList = new ArrayList<>(); + schema.getEntities().stream().findFirst().ifPresent(t -> { + t.getType().getFields().forEach(schemaFieldItem -> { + HashMap hashMapSchemaField = new HashMap<>(); + hashMapSchemaField.put("type", "Form"); + hashMapSchemaField.put("id", schemaFieldItem.getId()); + hashMapSchemaField.put("fieldName", schemaFieldItem.getBindingField()); + hashMapSchemaField.put("groupId", null); + hashMapSchemaField.put("groupName", null); + viewModelFieldList.add(hashMapSchemaField); + }); + }); + + hashMapViewModelItem.put("fields", viewModelFieldList); + }); + } + + if (metadataInfoItem.getTemplateInfo().isListTemplate() && Objects.equals(childItem.get("id"), "query-scheme-section")) { ArrayList> querySchemaSectionContents = (ArrayList>) childItem.get("contents"); querySchemaSectionContents.forEach(contentItem -> { - contentItem.put("formId", metadataInfoItem.getCode()); - - contentItem.put("presetQuerySolutionName", "默认筛选方案"); - contentItem.put("fieldConfigs", schema.getEntities().stream().findFirst().get().getType().getFields()); - contentItem.put("presetFieldConfigs", schema.getEntities().stream().findFirst().get().getType().getFields()); + if (Objects.equals(contentItem.get("type"), "QueryScheme")) { + contentItem.put("formId", metadataInfoItem.getCode()); + + contentItem.put("presetQuerySolutionName", "默认筛选方案"); + // 构造筛选方案fields + List schemaEntityFieldList = schema.getEntities().stream().findFirst().get().getType().getFields(); + List querySchemaFieldList = schemaEntityFieldList.stream().map(fieldItem -> { + QuerySchemaField querySchemaField = new QuerySchemaField(); + querySchemaField.setId(fieldItem.getId()); + querySchemaField.setCode(fieldItem.getCode()); + querySchemaField.setName(fieldItem.getName()); + querySchemaField.setLabelCode(fieldItem.getPath()); + + String fieldEditorType = ((SimpleField) fieldItem).getEditor().get$type(); + QuerySchemaField.QuerySchemaFieldControl querySchemaFieldControl = null; + switch (fieldEditorType) { + case "TextBox": + querySchemaFieldControl = new QuerySchemaField.QuerySchemaTextFieldControl(); + break; + case "NumericBox": + QuerySchemaField.QuerySchemaNumberFieldControl querySchemaNumberFieldControl = new QuerySchemaField.QuerySchemaNumberFieldControl(); + querySchemaNumberFieldControl.setId(fieldItem.getId()); + querySchemaNumberFieldControl.setPrecision(0d); + querySchemaNumberFieldControl.setBigNumber(fieldItem.getType().getName().equals("BigNumber")); + querySchemaFieldControl = querySchemaNumberFieldControl; + break; + case "DateBox": + QuerySchemaField.QuerySchemaDateFieldControl querySchemaDateFieldControl = new QuerySchemaField.QuerySchemaDateFieldControl(); + querySchemaDateFieldControl.setId(fieldItem.getId()); + querySchemaFieldControl = querySchemaDateFieldControl; + break; + case "EnumField": + QuerySchemaField.QuerySchemaDropdownFieldControl querySchemaDropdownFieldControl = new QuerySchemaField.QuerySchemaDropdownFieldControl(); + querySchemaDropdownFieldControl.setId(fieldItem.getId()); + querySchemaDropdownFieldControl.setValueType("1"); + //querySchemaDropdownFieldControl.setEnumValues(fieldItem.getType().get); + querySchemaFieldControl = querySchemaDropdownFieldControl; + break; + case "CheckBox": + QuerySchemaField.QuerySchemaDropdownFieldControl querySchemaDropdownFieldControlWithCheckBox = new QuerySchemaField.QuerySchemaDropdownFieldControl(); + querySchemaDropdownFieldControlWithCheckBox.setId(fieldItem.getId()); + querySchemaDropdownFieldControlWithCheckBox.setValueType("2"); + + ArrayNode arrayNode = JsonNodeFactory.instance.arrayNode(2); + ObjectNode trueNode = JsonNodeFactory.instance.objectNode(); + trueNode.put("value", true); + trueNode.put("name", "true"); + arrayNode.add(trueNode); + + ObjectNode falseNode = JsonNodeFactory.instance.objectNode(); + falseNode.put("value", false); + falseNode.put("name", "false"); + arrayNode.add(falseNode); + querySchemaDropdownFieldControlWithCheckBox.setEnumValues(arrayNode); + querySchemaFieldControl = querySchemaDropdownFieldControlWithCheckBox; + break; + default: + querySchemaFieldControl = new QuerySchemaField.QuerySchemaFieldControl(); + WebLogger.Instance.info("筛选方案字段构造,未匹配到合适的Editor 类型,使用默认的text类型"); + break; + } + + querySchemaFieldControl.setId(fieldItem.getId()); + querySchemaFieldControl.setRequire(false); + querySchemaField.setControl(querySchemaFieldControl); + + return querySchemaField; + }).collect(Collectors.toList()); + contentItem.put("fieldConfigs", querySchemaFieldList); + contentItem.put("presetFieldConfigs", querySchemaFieldList); + } }); } + // 卡片模板 + // 查找对应的Form + if (metadataInfoItem.getTemplateInfo().isNewCardTemplate() && Objects.equals(currentComponentId, "basic-form-component") && Objects.equals(childItem.get("type"), "Form")) { + schema.getEntities().stream().findFirst().ifPresent(mainEntity -> { + List mainEntityFieldList = mainEntity.getType().getFields(); + if (childItem.get("contents") == null) { + childItem.put("contents", new ArrayList>()); + } + //childItem.get("contents") + mainEntityFieldList.stream().forEach(fieldItem -> { + if (fieldItem instanceof SimpleField) { + SimpleField simpleFieldItem = (SimpleField) fieldItem; + String editorType = simpleFieldItem.getEditor().get$type(); + HashMap editorTypeParameter = CardTemplateEditorGenerator.generateWithEditorType(editorType); + + // 重新设置对应的控件id参数 + String strSplitId = fieldItem.getId().length() > 8 ? fieldItem.getId().substring(0, 8) : fieldItem.getId(); + String strGeneratedId = fieldItem.getBindingField() + "_" + strSplitId.replaceAll("-", "_") + "_" + RandomUtility.newGuid(4); + editorTypeParameter.put("id", strGeneratedId); + + editorTypeParameter.put("title", fieldItem.getName()); + + // require editorTypeParameter.put("require",fieldItem.get) + + editorTypeParameter.put("appearance", "{\"class\":\"col-12 col-md-6 col-xl-3 col-el-2\"}"); + //readonly editorTypeParameter.put("readonly",fieldItem.getre) + editorTypeParameter.put("binding", new ComponentBinding() { + { + this.setType("Form"); + this.setPath(fieldItem.getBindingField()); + this.setField(fieldItem.getId()); + this.setFullPath(fieldItem.getPath()); + } + }); + editorTypeParameter.put("path", fieldItem.getBindingPath()); + if (Objects.equals(editorTypeParameter.get("type"), "EnumField")) { + // editorTypeParameter.put("enumData",fieldItem.getType().) 设置对应的枚举数据 + editorTypeParameter.put("idField", "value"); + editorTypeParameter.put("textField", "name"); + // editorTypeParameter.put("maxSearchLength",fieldItem.getType().le) 获取列长度 + } + + if (Objects.equals(editorTypeParameter.get("type"), "NumericBox")) { + // editorTypeParameter.put("precision",fieldItem.getType().get$type()) 设置对应的精度 + if (Objects.equals(fieldItem.getType().get$type(), "BigNumericType")) { + editorTypeParameter.put("bigNumber", true); + } + } + + if (Objects.equals(editorTypeParameter.get("type"), "DateBox")) { + editorTypeParameter.put("fieldType", fieldItem.getType().getName()); + editorTypeParameter.put("localization", false); + editorTypeParameter.put("localizationType", fieldItem.getType().getName()); + if (Objects.equals(editorTypeParameter.get("fieldType"), "DateTime")) { + editorTypeParameter.put("showTime", true); + editorTypeParameter.put("dateFormat", "yyyy-MM-dd HH:mm:ss"); + editorTypeParameter.put("returnFormat", "yyyy-MM-dd HH:mm:ss"); + } + } + + ((ArrayList>) childItem.get("contents")).add(editorTypeParameter); +// childItem.computeIfPresent("contents", (key, value) -> { +// // 将编辑器 添加到contents节点下 +// ((ArrayList>) value).add(editorTypeParameter); +// }); + } + }); + }); + + } }); @@ -231,7 +422,19 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe formListMetadata.setContent(formMetadataContent); formListMetadata.setRefs(new ArrayList<>()); // 保存对应的表单元数据 +// if (MetadataUtility.getInstance().isMetaDataExistsWithMetadataPathAndFileName(formListMetadata.getRelativePath(), formListMetadata.getHeader().getFileName())) { +// MetadataUtility.getInstance().deleteMetadataInDisk(formListMetadata.getRelativePath(), formListMetadata.getHeader().getFileName()); +// } MetadataUtility.getInstance().saveMetadata(formListMetadata); + + // 更新对应的页面流 + // 增加此操作的目的是为了在编译时可以将当前表单加入 + PageFlowMetadataUpdateService.getInstance().updatePageFlowMetadata(new MetadataEventArgs() { + { + this.setMetadata(formListMetadata); + this.setPath(formListMetadata.getRelativePath()); + } + }); } } @@ -270,13 +473,6 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe throw new DynamicFormException("表单创建入参,工程code不能为空"); } - if (StringUtility.isNullOrEmpty(parameter.getVoMetadataId())) { - throw new DynamicFormException("表单创建入参,VO元数据id不能为空"); - } - - if (StringUtility.isNullOrEmpty(parameter.getEapiMetadataId())) { - throw new DynamicFormException("表单创建入参,Eapi元数据id不能为空"); - } if (StringUtility.isNullOrEmpty(parameter.getProjectNameSpace())) { throw new DynamicFormException("表单创建入参,工程命名空间不能为空"); diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/CardStateMachine.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/CardStateMachine.java index 75564500..ee0e579a 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/CardStateMachine.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/CardStateMachine.java @@ -29,7 +29,7 @@ public class CardStateMachine { " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"init\",\n" + + " \"target\": \"'init'\",\n" + " \"relation\": \"\",\n" + " \"rBracket\": \"\"\n" + " }],\n" + @@ -41,7 +41,7 @@ public class CardStateMachine { " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"init\",\n" + + " \"target\": \"'init'\",\n" + " \"relation\": \"\",\n" + " \"rBracket\": \"\"\n" + " }],\n" + @@ -53,14 +53,14 @@ public class CardStateMachine { " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"add\",\n" + + " \"target\": \"'add'\",\n" + " \"relation\": \"or\",\n" + " \"rBracket\": \"\"\n" + " }, {\n" + " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"edit\",\n" + + " \"target\": \"'edit'\",\n" + " \"relation\": \"\",\n" + " \"rBracket\": \"\"\n" + " }],\n" + @@ -72,14 +72,14 @@ public class CardStateMachine { " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"add\",\n" + + " \"target\": \"'add'\",\n" + " \"relation\": \"or\",\n" + " \"rBracket\": \"\"\n" + " }, {\n" + " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"edit\",\n" + + " \"target\": \"'edit'\",\n" + " \"relation\": \"\",\n" + " \"rBracket\": \"\"\n" + " }],\n" + @@ -91,7 +91,7 @@ public class CardStateMachine { " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"init\",\n" + + " \"target\": \"'init'\",\n" + " \"relation\": \"\",\n" + " \"rBracket\": \"\"\n" + " }],\n" + @@ -103,14 +103,14 @@ public class CardStateMachine { " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"add\",\n" + + " \"target\": \"'add'\",\n" + " \"relation\": \"or\",\n" + " \"rBracket\": \"\"\n" + " }, {\n" + " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"edit\",\n" + + " \"target\": \"'edit'\",\n" + " \"relation\": \"\",\n" + " \"rBracket\": \"\"\n" + " }],\n" + @@ -122,14 +122,14 @@ public class CardStateMachine { " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"add\",\n" + + " \"target\": \"'add'\",\n" + " \"relation\": \"or\",\n" + " \"rBracket\": \"\"\n" + " }, {\n" + " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"edit\",\n" + + " \"target\": \"'edit'\",\n" + " \"relation\": \"\",\n" + " \"rBracket\": \"\"\n" + " }],\n" + @@ -141,14 +141,14 @@ public class CardStateMachine { " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"add\",\n" + + " \"target\": \"'add'\",\n" + " \"relation\": \"or\",\n" + " \"rBracket\": \"\"\n" + " }, {\n" + " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"edit\",\n" + + " \"target\": \"'edit'\",\n" + " \"relation\": \"\",\n" + " \"rBracket\": \"\"\n" + " }],\n" + diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/ListStateMachine.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/ListStateMachine.java index 27f659b6..a105cf09 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/ListStateMachine.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/ListStateMachine.java @@ -30,7 +30,7 @@ public class ListStateMachine { " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"init\",\n" + + " \"target\": \"'init'\",\n" + " \"relation\": \"\",\n" + " \"rBracket\": \"\"\n" + " }\n" + @@ -44,7 +44,7 @@ public class ListStateMachine { " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"init\",\n" + + " \"target\": \"'init'\",\n" + " \"relation\": \"\",\n" + " \"rBracket\": \"\"\n" + " }\n" + @@ -58,7 +58,7 @@ public class ListStateMachine { " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"init\",\n" + + " \"target\": \"'init'\",\n" + " \"relation\": \"\",\n" + " \"rBracket\": \"\"\n" + " }\n" + @@ -72,7 +72,7 @@ public class ListStateMachine { " \"lBracket\": \"\",\n" + " \"source\": \"state\",\n" + " \"compare\": \"===\",\n" + - " \"target\": \"init\",\n" + + " \"target\": \"'init'\",\n" + " \"relation\": \"\",\n" + " \"rBracket\": \"\"\n" + " }\n" + diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/StateMachineMetadataGenerator.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/StateMachineMetadataGenerator.java index 52cc027e..82aabe0d 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/StateMachineMetadataGenerator.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/StateMachineMetadataGenerator.java @@ -34,11 +34,13 @@ import java.util.Optional; /** * 状态机元数据构造 + * * @author guozhiqi */ public class StateMachineMetadataGenerator { /** * 构造并保存状态机元数据 + * * @param parameter * @param formMetadataRelativePath * @param metadataInfoItem @@ -74,6 +76,13 @@ public class StateMachineMetadataGenerator { stateMachineList.add(stateMachineMap); formDOM.getModule().setStateMachines((ArrayList>) stateMachineList); + // 更新对应的viewModel节点的状态机参数定义 + formDOM.getModule().getviewmodels().forEach(viewModelItem -> { + // 仅在模板定义的位置 如果包含stateMachine 定义 那么更新该值为当前的状态机 + viewModelItem.computeIfPresent("stateMachine", (key, value) -> stateMachineMap.get("id")); + }); + + }); } diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java index ac6487eb..c3ba3884 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java @@ -41,17 +41,19 @@ public class DynamicFormWebServiceImpl implements DynamicFormWebService { DynamicCreateFormMetadataParameter parameter = new DynamicCreateFormMetadataParameter(); parameter.setBizobjectID("e52935d0-8956-2325-78d7-ecd19b9baab5"); - parameter.setEapiMetadataId("12c33fcd-efb5-497a-9c24-cb26abc684e0"); - parameter.setVoMetadataId("42d6388c-0d48-4722-9ef0-b45d2179f848"); + parameter.setProjectCode("testaddproj"); parameter.setProjectPath("testadd/testaddmodule/testaddproj/bo-testaddprojfront/metadata"); parameter.setProjectNameSpace("Inspur.GS.testadd.testaddmodule.testaddproj"); FormMetadataInfo formMetadataInfo = new FormMetadataInfo(); - formMetadataInfo.setCode("testaddcreate8"); - formMetadataInfo.setName("testaddcreate8"); - + formMetadataInfo.setCode("testaddcreate9"); + formMetadataInfo.setName("testaddcreate9"); + formMetadataInfo.setEapiMetadataId("cb90d62a-6d08-45df-a286-1d9f37ac0a50"); + // 设置eapi暴露的uri地址 + formMetadataInfo.setEapiSourceUri("api/pj542134app/pj542134su/v1.0/pj542134vo"); + formMetadataInfo.setVoMetadataId("90c53a38-14a3-4722-98f5-48da135dd8ee"); FormMetadataTemplateInfo formMetadataTemplateInfo = new FormMetadataTemplateInfo(); // 列表使用的模板 new-list-template @@ -62,6 +64,24 @@ public class DynamicFormWebServiceImpl implements DynamicFormWebService { formMetadataInfo.setTemplateInfo(formMetadataTemplateInfo); parameter.getFormMetadataInfoList().add(formMetadataInfo); + FormMetadataInfo formMetadataInfoCard = new FormMetadataInfo(); + formMetadataInfoCard.setCode("testaddcreate9_card"); + formMetadataInfoCard.setName("testaddcreate9_card"); + + formMetadataInfoCard.setEapiMetadataId("cb90d62a-6d08-45df-a286-1d9f37ac0a50"); + // 设置eapi暴露的uri地址 + formMetadataInfoCard.setEapiSourceUri("api/pj542134app/pj542134su/v1.0/pj542134vo"); + formMetadataInfoCard.setVoMetadataId("90c53a38-14a3-4722-98f5-48da135dd8ee"); + + FormMetadataTemplateInfo formMetadataTemplateInfoCard = new FormMetadataTemplateInfo(); + // 列表使用的模板 new-list-template + // 卡片使用的模板 new-card-template + formMetadataTemplateInfoCard.setTemplateCode("new-card-template"); + formMetadataTemplateInfoCard.setTemplateName("new-card-template"); + formMetadataTemplateInfoCard.setTemplateId("new-card-template"); + formMetadataInfoCard.setTemplateInfo(formMetadataTemplateInfoCard); + parameter.getFormMetadataInfoList().add(formMetadataInfoCard); + // 为了方便调试 临时增加固定目录 MetadataUtility.getInstance().getMetadataService().setMetadataUri("testadd/testaddmodule/testaddproj/bo-testaddprojfront/metadata"); -- Gitee From 654645ae22fa73cbb119fe70dc1a0705189cf88e Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Fri, 10 Mar 2023 14:22:10 +0800 Subject: [PATCH 12/31] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edp/web/common/logger/WebLogger.java | 3 ++- .../web/common/metadata/MetadataUtility.java | 1 - .../edp/web/common/io/FileUtilityTest.java | 11 ++++++++++ .../metadataanalysis/FormAnalysis.java | 4 ++-- .../metadata/FormMetadataManager.java | 9 ++++++-- .../entity/PageFlowMetadataEntity.java | 22 ++++++++++++++----- 6 files changed, 39 insertions(+), 11 deletions(-) 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 569833a4..b1d3fcc1 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 @@ -116,7 +116,7 @@ public enum WebLogger { return LoggerFactory.getLogger(name); } - private String defaultLoggerName = WebLogger.class.getName(); + private final String defaultLoggerName = WebLogger.class.getName(); /** @@ -197,6 +197,7 @@ public enum WebLogger { /** * 创建对应的logger实例 * 提取函数,避免方法过长且复杂 + * * @param loggerName * @return */ 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 f2ce5692..8abb3772 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 @@ -358,7 +358,6 @@ public final class MetadataUtility { * 元数据保存 如果元数据已经存在,则先进行删除旧的元数据文件 * * @param metadata - * @param deleteIfExists */ public void saveMetadata(GspMetadata metadata) { MetadataService metadataService = SpringBeanUtils.getBean(MetadataService.class); diff --git a/web-common/src/test/java/com/inspur/edp/web/common/io/FileUtilityTest.java b/web-common/src/test/java/com/inspur/edp/web/common/io/FileUtilityTest.java index 469aa290..7c3bc9ea 100644 --- a/web-common/src/test/java/com/inspur/edp/web/common/io/FileUtilityTest.java +++ b/web-common/src/test/java/com/inspur/edp/web/common/io/FileUtilityTest.java @@ -25,6 +25,17 @@ public class FileUtilityTest { Assert.assertTrue(FileUtility.isSameFile(sourceFile, targetFile)); } + /** + * 判断文件权限 + */ + @Test + public void testPermission() { + String sourceFile = "D:\\InspurCode\\N转J之后代码\\npm安装\\web\\web-common\\src\\test\\java\\com\\inspur\\edp\\web\\common\\io\\sourcefile\\package.json"; + File file = new File(sourceFile); + System.out.println(file.canRead()); + System.out.println(file.canWrite()); + } + @Test public void testGetCurrentWorkPath() { String path = FileUtility.getCurrentWorkPath(true); diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/FormAnalysis.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/FormAnalysis.java index 67b896ad..606e93de 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/FormAnalysis.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/FormAnalysis.java @@ -68,8 +68,8 @@ public class FormAnalysis { * 进行参数返回值封装 */ public static class ResolveFormResult { - private FormDOM json; - private String relativePath; + private final FormDOM json; + private final String relativePath; public ResolveFormResult(FormDOM json, String relativePath) { this.json = json; 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 d9ef985d..2344d994 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 @@ -85,7 +85,7 @@ public class FormMetadataManager { pageFlowMetadataEntity = PageFlowMetadataManager.getPageFlowEntityList(projectPath, appConfigurationInfo, terminalType); // 页面流不存在、页面流中没有表单时返回空列表 - if (pageFlowMetadataEntity == null || pageFlowMetadataEntity.getPages() == null || pageFlowMetadataEntity.getPages().length == 0) { + if (pageFlowMetadataEntity == null || pageFlowMetadataEntity.hasEmptyPage()) { return formMetadataList; } } @@ -115,8 +115,13 @@ public class FormMetadataManager { for (Page page : pages) { String pageRelativePath = modifyPageRelativePath(page.getRelativePath(), projectPath); + // 如果对应的表单元数据路径为绝对路径 那么需要进行调整 + if (FileUtility.isAbsolute(pageRelativePath)) { + throw new RuntimeException("页面流文件(后缀为.pf)中包含绝对路径,依赖于单个环境路径配置,请调整为相对路径。具体操作:打开页面流文件,通过将表单从页面流中先移除再添加的方式,自动进行调整。 对应表单元数据为:" + page.getName() + ",当前绝对路径为:" + page.getRelativePath()); + } + // 增加表单元数据的存在检测 if (!metadataService.isMetadataExist(pageRelativePath, page.getFileName())) { - throw new RuntimeException("页面流文件(后缀为.pf)中包含绝对路径,需调整为相对路径。 请打开页面流文件,通过将表单从页面流中先移除再添加的方式,自动进行调整。 对应表单元数据为:" + page.getName() + ",当前绝对路径为:" + page.getRelativePath()); + throw new RuntimeException("页面流文件(后缀为.pf)中配置表单元数据不存在,请移除。对应表单元数据code:" + page.getCode() + ",name: " + page.getName()); } GspMetadata currentRouteMetadata = metadataService.loadMetadata(page.getFileName(), pageRelativePath); diff --git a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/entity/PageFlowMetadataEntity.java b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/entity/PageFlowMetadataEntity.java index c7415732..839611c6 100644 --- a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/entity/PageFlowMetadataEntity.java +++ b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/entity/PageFlowMetadataEntity.java @@ -23,6 +23,7 @@ import com.inspur.edp.web.pageflow.metadata.serializer.PageFlowMetadataTransferS import lombok.Getter; import lombok.Setter; +import java.io.Serializable; import java.util.List; /** @@ -31,7 +32,9 @@ import java.util.List; //TODO N转J N版存在[Serializable]注解 @Getter @Setter -public class PageFlowMetadataEntity extends AbstractMetadataContent { +public class PageFlowMetadataEntity extends AbstractMetadataContent implements Serializable { + private static final long serialVersionUID = 2062374129918l; + /** * ID */ @@ -57,13 +60,13 @@ public class PageFlowMetadataEntity extends AbstractMetadataContent { /** * 关联应用code */ - private String appCode; + private String appCode; /** * 关联应用name */ - private String appName; + private String appName; - private Listpublishes; + private List publishes; @Override public PageFlowMetadataEntity clone() { @@ -78,7 +81,7 @@ public class PageFlowMetadataEntity extends AbstractMetadataContent { return pageFlowMetadataEntityStr; } - pageFlowMetadataEntityStr = SerializeUtility.getInstance().serialize(pageFlowMetadataEntity,false); + pageFlowMetadataEntityStr = SerializeUtility.getInstance().serialize(pageFlowMetadataEntity, false); return pageFlowMetadataEntityStr; } @@ -118,4 +121,13 @@ public class PageFlowMetadataEntity extends AbstractMetadataContent { return routeUri; } + + /** + * 页面流中未配置任何页面 + * + * @return + */ + public boolean hasEmptyPage() { + return this.getPages() == null || this.getPages().length == 0; + } } -- Gitee From e699a01a72d7d7c1f6b87e79d15ae28a931c1134 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Fri, 10 Mar 2023 14:39:50 +0800 Subject: [PATCH 13/31] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scriptcache/service/ScriptCacheServiceImpl.java | 1 - .../core/service/ApprovalFormatServiceImpl.java | 1 - .../com/inspur/edp/web/common/utility/CommandLineUtility.java | 1 - .../com/inspur/edp/web/jitengine/ProjectCompileContext.java | 4 ++++ .../jitengine/metadataanalysis/CommandServiceAnalysis.java | 1 - .../edp/web/formmetadata/event/WebCommandMetadataDelete.java | 1 - .../web/formmetadata/replication/FormMetadataReplicator.java | 2 -- .../edp/web/npmpackage/core/npminstall/NpmInstallManager.java | 1 - .../web/npmpackage/core/npmlogin/NpmLoginCommandExecutor.java | 2 -- .../web/pageflow/metadata/entity/PageFlowMetadataEntity.java | 4 ++-- 10 files changed, 6 insertions(+), 12 deletions(-) diff --git a/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/service/ScriptCacheServiceImpl.java b/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/service/ScriptCacheServiceImpl.java index 70189ce9..39760cfd 100644 --- a/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/service/ScriptCacheServiceImpl.java +++ b/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/service/ScriptCacheServiceImpl.java @@ -84,7 +84,6 @@ public class ScriptCacheServiceImpl implements ScriptCacheService { fileList = FileUtility.getFiles(strFolder, true); } else { String filePath = FileUtility.combine(strFolder, fileName); - //fileList = FileUtility.getFiles(filePath, true); fileList.add(new File(filePath)); } diff --git a/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormatServiceImpl.java b/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormatServiceImpl.java index 31f29ae6..fdac9add 100644 --- a/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormatServiceImpl.java +++ b/web-approval-format-core/src/main/java/com/inspur/edp/web/approvalformat/core/service/ApprovalFormatServiceImpl.java @@ -122,7 +122,6 @@ public class ApprovalFormatServiceImpl implements ApprovalFormatService { } } - // TODO: 迁移到公共方法 private String getServiceUnitCode(String metadataId) { GspMetadata bizEntityMetadata = this.customizationService.getMetadata(metadataId); if (bizEntityMetadata == null) { 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 5b92932d..79435354 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 @@ -121,7 +121,6 @@ public class CommandLineUtility { if (waitCode != 0) { WebLogger.Instance.info("进程执行完毕", CommandLineUtility.class.getName()); } - //process.destroy(); } catch (Exception e) { WebLogger.Instance.error(e); errorMessage = e.getMessage() + Arrays.toString(e.getStackTrace()); diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/ProjectCompileContext.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/ProjectCompileContext.java index 91b31b42..459ec9af 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/ProjectCompileContext.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/ProjectCompileContext.java @@ -20,6 +20,10 @@ import com.inspur.edp.web.common.JITEngineConstants; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; +/** + * + * @author guozhiqi + */ public class ProjectCompileContext { private boolean generateViewModel; diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandServiceAnalysis.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandServiceAnalysis.java index 6e13ff9e..e794a44b 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandServiceAnalysis.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandServiceAnalysis.java @@ -129,7 +129,6 @@ public class CommandServiceAnalysis { WebLogger.Instance.info(tscBuildResult, CommandServiceAnalysis.class.getName()); } - //String fileNameWithoutExtension = FilenameUtils.getBaseName((String) item.getKey()); String rollupPath = FileUtility.combine(directory, "dist-tsc"); NodeJsCommandResult rollupCommandResult = NodejsFunctionUtility.getRollupCommandInServer(false); 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 ed6a2bc9..0d484e1e 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 @@ -76,7 +76,6 @@ class WebCommandMetadataDelete { String relativeTsFileName = fileName.substring(0, fileName.lastIndexOf(".")) + ".ts"; // 获取文件目录下所有的关联ts文件 - //String[] frmRelativeTs = relativePath.list(new FileNameFilter(frmXiaPrefix + "[\\S]+.ts")); deleteList.add(relativeTsFileName); // 获取文件目录下所有的关联webcmp文件 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 3fe2e17c..09130a91 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 @@ -193,8 +193,6 @@ public class FormMetadataReplicator { } } - - // MetadataUtility.getInstance().createMetadataIfNotExists(targetResourceMetadata); MetadataUtility.getInstance().saveMetadata(targetResourceMetadata); } } diff --git a/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/NpmInstallManager.java b/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/NpmInstallManager.java index c7ac969b..bf2d0044 100644 --- a/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/NpmInstallManager.java +++ b/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/NpmInstallManager.java @@ -123,7 +123,6 @@ public class NpmInstallManager { * @return */ public static NpmPackageResponse npmInstall(NpmInstallParameter npmInstallParameter, boolean enableForceUpdate) { - //LoggerUtility.log("开始执行npm install 参数校验", LoggerLevelEnum.Info, true); NpmPackageResponse npmPackageResponse = NpmInstallParameterValidator.validate(npmInstallParameter); if (!npmPackageResponse.isSuccess()) { return npmPackageResponse; diff --git a/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npmlogin/NpmLoginCommandExecutor.java b/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npmlogin/NpmLoginCommandExecutor.java index 816ef608..43e11769 100644 --- a/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npmlogin/NpmLoginCommandExecutor.java +++ b/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npmlogin/NpmLoginCommandExecutor.java @@ -159,8 +159,6 @@ public class NpmLoginCommandExecutor { } process.waitFor(); - // 销毁线程 - //process.destroy(); } catch (Exception e) { WebLogger.Instance.error(e); diff --git a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/entity/PageFlowMetadataEntity.java b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/entity/PageFlowMetadataEntity.java index 839611c6..70c494c4 100644 --- a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/entity/PageFlowMetadataEntity.java +++ b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/entity/PageFlowMetadataEntity.java @@ -28,12 +28,12 @@ import java.util.List; /** * 页面流定义实体 + * @author guozhiqi */ -//TODO N转J N版存在[Serializable]注解 @Getter @Setter public class PageFlowMetadataEntity extends AbstractMetadataContent implements Serializable { - private static final long serialVersionUID = 2062374129918l; + private static final long serialVersionUID = 2062374129918L; /** * ID -- Gitee From a35763fc6e9308bf7816a66d9a9da2f8dcbaf7cf Mon Sep 17 00:00:00 2001 From: lijiangkun Date: Mon, 13 Mar 2023 14:26:40 +0800 Subject: [PATCH 14/31] =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E6=96=B0=E7=89=88?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web-form-metadata/pom.xml | 4 - .../event/FormMetadataSaveEventListener.java | 113 ++++++++++++++++++ .../event/WebCommandMetadataDelete.java | 2 +- .../FrontendProjectCompiler.java | 1 + .../MetadataChangeStepExecuteImpl.java | 41 ++++++- .../PageFlowMetadataUpdateService.java | 2 +- .../api/webservice/TsFileWebService.java | 4 + .../web/tsfile/core/TsFileWebServiceImpl.java | 6 + .../core/service/TsFileService4WebApi.java | 14 +++ 9 files changed, 179 insertions(+), 8 deletions(-) diff --git a/web-form-metadata/pom.xml b/web-form-metadata/pom.xml index 93e8256d..5ceed1f2 100644 --- a/web-form-metadata/pom.xml +++ b/web-form-metadata/pom.xml @@ -57,10 +57,6 @@ io.iec.edp caf-framework-licservice-api - - com.inspur.edp - lcm-metadata-spi - com.inspur.edp web-tsfile-api 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 c39927f8..2ee00d4b 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 @@ -122,6 +122,64 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { } + if (TerminalType.MOBILE.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType())) { + try { + // 获取表单元数据的文件名称 + String metaDataCode = metadataEventArgs.getMetadata().getHeader().getCode(); + String formMetadataRelativePath = metadataEventArgs.getMetadata().getRelativePath(); + + MetadataProjectService metadataProjectService = SpringBeanUtils.getBean(MetadataProjectService.class); + MetadataProject projInfo = metadataProjectService.getMetadataProjInfo(formMetadataRelativePath); + String projectPath = projInfo.getProjectPath(); + + //获取待删除的文件列表 仅删除当前目录下 + List relativeMetadataDeleteList = new ArrayList<>(); //generateDeleteList(metaDataCode, new File(formMetadataRelativePath)); + + // 读取表单元数据 解析其中的eapiid + // 如果传递的表单元数据中内容为空 + if (metadataEventArgs.getMetadata().getContent() == null) { + GspMetadata metadata = MetadataUtility.getInstance().getMetadata(metadataEventArgs.getMetadata().getHeader().getFileName(), metadataEventArgs.getMetadata().getRelativePath()); + if (metadata != null) { + metadataEventArgs.getMetadata().setContent(metadata.getContent()); + } + } + + if (metadataEventArgs.getMetadata().getContent() != null) { + String formMetadataStr = ((FormMetadataContent) metadataEventArgs.getMetadata().getContent()).getContents().toString(); + FormDOM formDOM = SerializeUtility.getInstance().deserialize(formMetadataStr, FormDOM.class); + if (formDOM.getModule().getSchemas() != null && formDOM.getModule().getSchemas().size() > 0) { + deleteRelateEapiMetadata(projectPath, formDOM); + } + + // 获取待删除的命令元数据 命令构件 ts文件 + try { + WebCommandMetadataDelete webCommandMetadataDelete = new WebCommandMetadataDelete(); + List webCmpAndTsDeleteList = webCommandMetadataDelete.generateWebCmpAndTsDeleteList(formDOM, projInfo); + relativeMetadataDeleteList.addAll(new ArrayList<>(webCmpAndTsDeleteList)); + } catch (Exception ex) { + WebLogger.Instance.error(ex); + } + } + + relativeMetadataDeleteList.forEach(t -> { + File deleteFileInfo = new File(FileUtility.combine(formMetadataRelativePath, t)); + if (deleteFileInfo.exists()) { + // 执行元数据删除 + MetadataUtility.getInstance().getMetadataService().deleteMetadata(formMetadataRelativePath, t); + } + }); + + // 删除关联的表单源代码 + deleteRelateFormSourceCode(projectPath, projInfo.getName(), metaDataCode); + // 更新页面流元数据 + } catch (RuntimeException ex) { + WebLogger.Instance.error(ex); + } catch (Exception ex) { + WebLogger.Instance.error(ex); + } + + } + } /** @@ -155,6 +213,11 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { deleteRelateMetadataAfterFormMetadataDeleted(metadataEventArgs); } + if (TerminalType.MOBILE.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType())) { + deleteRelateMetadataAfterMobileFormMetadataDeleted(metadataEventArgs); + } + + // 如果是帮助元数据的删除 那么将其关联的res也要对应的删除 if ("HelpMetadata".equals(metadataEventArgs.getMetadata().getHeader().getType())) { try { @@ -188,6 +251,29 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { WebLogger.Instance.error(ex); } } + /** + * 表单元数据删除后关联元数据删除 + * @param metadataEventArgs + */ + private void deleteRelateMetadataAfterMobileFormMetadataDeleted(MetadataEventArgs metadataEventArgs) { + try { + // 获取表单元数据的文件名称 + String metaDataCode = metadataEventArgs.getMetadata().getHeader().getCode(); + String formMetadataRelativePath = metadataEventArgs.getMetadata().getRelativePath(); + + //获取待删除的文件列表 仅删除当前目录下 + List relativeMetadataDeleteList = generateMobileDeleteList(metaDataCode, new File(formMetadataRelativePath)); + relativeMetadataDeleteList.forEach(t -> { + File deleteFileInfo = new File(FileUtility.combine(formMetadataRelativePath, t)); + if (deleteFileInfo.exists()) { + // 执行元数据删除 + MetadataUtility.getInstance().getMetadataService().deleteMetadata(formMetadataRelativePath, t); + } + }); + } catch (Exception ex) { + WebLogger.Instance.error(ex); + } + } /** * WebComponent 删除后删除对应的ts文件 @@ -307,5 +393,32 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { return deleteList; } + private List generateMobileDeleteList(String metaDataCode, File relativePath) { + List deleteList = new ArrayList<>(); + String frmDotPrefix = metaDataCode + ".mfrm"; + String frmXiaPrefix = metaDataCode + "_mfrm"; + + // 表单关联资源文件 + deleteList.add(frmDotPrefix + ".en.lres"); + deleteList.add(frmDotPrefix + ".res"); + deleteList.add(frmDotPrefix + ".zh-CHT.lres"); + + // 表单元数据json文件 + deleteList.add(frmXiaPrefix + ".json"); + + // 表单关联状态机 + deleteList.add(frmXiaPrefix + ".sm"); + + // 表单元数据 关联VO 及其资源元数据 + deleteList.add(frmXiaPrefix + ".vo"); + deleteList.add(frmXiaPrefix + ".vo.en.lres"); + deleteList.add(frmXiaPrefix + ".vo.res"); + deleteList.add(frmXiaPrefix + ".vo.zh-CHT.lres"); + + + return deleteList; + } + + } 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 b5659e24..b5b63396 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 @@ -30,7 +30,7 @@ class WebCommandMetadataDelete { String webCmdFileName = c.get("name").toString(); if (StringUtility.isNullOrEmpty(webCmdFileName)) { webCmdFileName = metadata.getCode() + ".webcmd"; - } + }CommandsAnalysis deleteList.add(webCmdFileName); } } catch (Exception ex) { diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java index 38c66da5..9f8d6f81 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java @@ -94,6 +94,7 @@ public class FrontendProjectCompiler implements MetadataCompileAction { ChangeDetectContext changeDetectContext = new ChangeDetectContext(); changeDetectContext.setProjectPath(projectPath); + changeDetectContext.setTerminalType(terminalType); WebLogger.Instance.info("Web生成变更检测开始执行,对应工程路径为:" + projectPath); ChangeDetectExecuteResult compileExecuteResult = ChangeDetectExecuteManager.execute(ChangeDetectExecuteType.Generate, changeDetectContext); // 生成前编译检查 diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/changedetect/generate/stepexecute/MetadataChangeStepExecuteImpl.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/changedetect/generate/stepexecute/MetadataChangeStepExecuteImpl.java index 4193e09d..a4960ec1 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/changedetect/generate/stepexecute/MetadataChangeStepExecuteImpl.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/changedetect/generate/stepexecute/MetadataChangeStepExecuteImpl.java @@ -41,6 +41,7 @@ public class MetadataChangeStepExecuteImpl extends AbstractGenerateChangeDetectS * lres的正则匹配 */ private static final Pattern lresPattern = Pattern.compile(".frm.[a-zA-Z-_]+.lres", Pattern.COMMENTS | Pattern.CASE_INSENSITIVE); + private static final Pattern mobileLresPattern = Pattern.compile(".mfrm.[a-zA-Z-_]+.lres", Pattern.COMMENTS | Pattern.CASE_INSENSITIVE); /** * 步骤执行器参数 @@ -54,7 +55,14 @@ public class MetadataChangeStepExecuteImpl extends AbstractGenerateChangeDetectS MetadataProjectService metadataProjectService = this.getMetadataProjectService(); // 首先进行元数据变化的检测 如果发生变化 那么认定需要重新生成 // 工程目录下所有的元数据变更检测 - boolean webRelyMetadataChanged = metadataProjectService.isMetadataChanged(context.getProjectPath(), OperationEnum.WEB_GENERATE, this::checkFilePath); + boolean webRelyMetadataChanged; + if (context.getTerminalType() == TerminalType.MOBILE){ + webRelyMetadataChanged = metadataProjectService.isMetadataChanged(context.getProjectPath(), OperationEnum.WEB_GENERATE, this::checkMobileFilePath); + + }else{ + webRelyMetadataChanged = metadataProjectService.isMetadataChanged(context.getProjectPath(), OperationEnum.WEB_GENERATE, this::checkFilePath); + + } if (webRelyMetadataChanged) { executeResult.setUnPassReason(this.generateReasonWithPrefix("元数据发生变化")); return executeResult; @@ -94,6 +102,29 @@ public class MetadataChangeStepExecuteImpl extends AbstractGenerateChangeDetectS return true; } + private boolean checkMobileFilePath(File pathname) { + if (pathname.isFile()) { + // 当前针对res、lres 仅进行form的验证 其他元数据的res 不进行验证 + String filePath = pathname.getPath(); + String fileExtension = FileUtility.getFileExtension(filePath); + if (StringUtility.isNullOrEmpty(fileExtension)) { + return true; + } + // 仅处理res和lres 保留表单对应 + if (fileExtension.equals(".res") || fileExtension.equals(".lres")) { + // 表示当前文件为资源文件类型 + // 针对res文件 仅仅保留frm的资源文件 其他的资源文件一律不进行检测 + if (filePath.endsWith(".mfrm.res")) { + return true; + } + + //lres 匹配 + Matcher m = mobileLresPattern.matcher(filePath); + return m.find(); + } + } + return true; + } /** * 检测表单依赖的元数据是否发生变更 @@ -233,7 +264,13 @@ public class MetadataChangeStepExecuteImpl extends AbstractGenerateChangeDetectS ChangeDetectStepExecuteResult executeResult = ChangeDetectStepExecuteResult.getPassResult(ChangeDetectExecuteType.Generate); MetadataProjectService metadataProjectService = this.getMetadataProjectService(); // 首先进行元数据变化的检测 如果发生变化 那么认定需要重新生成 - metadataProjectService.updateMetadataChanges(context.getProjectPath(), OperationEnum.WEB_GENERATE, this::checkFilePath); + if (context.getTerminalType() == TerminalType.MOBILE){ + metadataProjectService.updateMetadataChanges(context.getProjectPath(), OperationEnum.WEB_GENERATE, this::checkMobileFilePath); + + }else{ + metadataProjectService.updateMetadataChanges(context.getProjectPath(), OperationEnum.WEB_GENERATE, this::checkFilePath); + + } // 更新表单依赖元数据变更 checkFormRelyMetadataChanged(context, metadataProjectService, ExecuteType.UpdateChangeset); diff --git a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java index 06e2d977..5b9040a2 100644 --- a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java +++ b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java @@ -81,7 +81,7 @@ public class PageFlowMetadataUpdateService { public void syncPageFlowMetadataAfterFormDeleted(MetadataEventArgs metadataEventArgs) { log.debug("Debug_PageFlowMetadataDeleteEventListener_SyncPageFlowMetadata: Sync PageFlow Metadata When Having Deleted Form metadatas."); // 监听表单元数据删除。当删除表单元数据,同步页面流元数据 - if (!TerminalType.PC.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType())) { + if (!TerminalType.PC.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType()) && !TerminalType.MOBILE.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType())) { return; } diff --git a/web-tsfile-api/src/main/java/com/inspur/edp/web/tsfile/api/webservice/TsFileWebService.java b/web-tsfile-api/src/main/java/com/inspur/edp/web/tsfile/api/webservice/TsFileWebService.java index 003beb89..bcb464bb 100644 --- a/web-tsfile-api/src/main/java/com/inspur/edp/web/tsfile/api/webservice/TsFileWebService.java +++ b/web-tsfile-api/src/main/java/com/inspur/edp/web/tsfile/api/webservice/TsFileWebService.java @@ -27,4 +27,8 @@ public interface TsFileWebService { @Path("create") @POST void createTypescriptFile(@QueryParam("path") String path); + + @Path("create/mobile") + @POST + void createMobileTsFile(@QueryParam("path") String path); } diff --git a/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/TsFileWebServiceImpl.java b/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/TsFileWebServiceImpl.java index 7fbfd330..46dabb72 100644 --- a/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/TsFileWebServiceImpl.java +++ b/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/TsFileWebServiceImpl.java @@ -40,4 +40,10 @@ public class TsFileWebServiceImpl implements TsFileWebService { service.createTypescriptFile(path); } + @Override + public void createMobileTsFile(String path) { + TsFileService4WebApi service = new TsFileService4WebApi(); + service.createMobileTsFile(path); + } + } diff --git a/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/service/TsFileService4WebApi.java b/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/service/TsFileService4WebApi.java index dd14cca2..ae39f6f0 100644 --- a/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/service/TsFileService4WebApi.java +++ b/web-tsfile-core/src/main/java/com/inspur/edp/web/tsfile/core/service/TsFileService4WebApi.java @@ -56,4 +56,18 @@ public class TsFileService4WebApi { "}" + "\r\n"; service.saveTsFile(fullPath, contentSB); } + + public final void createMobileTsFile(String fullPath) { + String normalized = service.getTsClassNameByPath(fullPath); + + String contentSB = "import { BaseDataService } from '@farris/mobile-command-services';\r\n" + + "import { ViewModelContext} from '@farris/mobile-devkit';\r\n" + + + "\r\nexport class " + normalized + " extends BaseDataService {\r\n" + + " constructor(viewModelContext: ViewModelContext) {\r\n" + + " super(viewModelContext)\r\n" + + " }\r\n" + + "}\r\n"; + service.saveTsFile(fullPath, contentSB); + } } -- Gitee From f88492f88919365c245af36b5388b541026d0b76 Mon Sep 17 00:00:00 2001 From: lijiangkun Date: Tue, 14 Mar 2023 11:08:59 +0800 Subject: [PATCH 15/31] =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=B5=81=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/WebCommandMetadataDelete.java | 2 +- .../PageFlowMetadataUpdateService.java | 28 +++++++++++++++---- 2 files changed, 23 insertions(+), 7 deletions(-) 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 b5b63396..b5659e24 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 @@ -30,7 +30,7 @@ class WebCommandMetadataDelete { String webCmdFileName = c.get("name").toString(); if (StringUtility.isNullOrEmpty(webCmdFileName)) { webCmdFileName = metadata.getCode() + ".webcmd"; - }CommandsAnalysis + } deleteList.add(webCmdFileName); } } catch (Exception ex) { diff --git a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java index 5b9040a2..011e0844 100644 --- a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java +++ b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java @@ -90,15 +90,25 @@ public class PageFlowMetadataUpdateService { if (appConfigInfo == null) { return; } + PageFlowMetadataEntity pageFlowMetadataEntity; String projectPath = MetadataUtility.getInstance().getMetadataProjectPath(metadataEventArgs.getMetadata().getRelativePath()); - - PageFlowMetadataEntity pageFlowMetadataEntity = RouteMetataService.getRouteMetadataContentWithMetadataIdAndProjectPath(appConfigInfo.getPageFlowMetadataID(), appConfigInfo.getPageFlowMetadataFileName(), projectPath); - if (pageFlowMetadataEntity == null) { - log.debug(String.format("Current Project %1$s's PageFlowMetadata %2$s Content is Null.", metadataEventArgs.getMetadata().getRelativePath(), appConfigInfo.getPageFlowMetadataFileName())); - return; + if(TerminalType.MOBILE.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType())){ + pageFlowMetadataEntity = RouteMetataService.getRouteMetadataContentWithMetadataIdAndProjectPath(appConfigInfo.getMobilePageFlowMetadataID(), appConfigInfo.getMobilePageFlowMetadataFileName(), projectPath); + if (pageFlowMetadataEntity == null) { + log.debug(String.format("Current Project %1$s's PageFlowMetadata %2$s Content is Null.", metadataEventArgs.getMetadata().getRelativePath(), appConfigInfo.getPageFlowMetadataFileName())); + return; + } + }else{ + pageFlowMetadataEntity = RouteMetataService.getRouteMetadataContentWithMetadataIdAndProjectPath(appConfigInfo.getPageFlowMetadataID(), appConfigInfo.getPageFlowMetadataFileName(), projectPath); + if (pageFlowMetadataEntity == null) { + log.debug(String.format("Current Project %1$s's PageFlowMetadata %2$s Content is Null.", metadataEventArgs.getMetadata().getRelativePath(), appConfigInfo.getPageFlowMetadataFileName())); + return; + } } + + // (2) 从页面流中同步删除该表单元数据的记录 log.debug("Current PageFlowMetadataEntity Pages Number is:" + pageFlowMetadataEntity.getPages().length); Page[] updatePages = null; @@ -127,7 +137,13 @@ public class PageFlowMetadataUpdateService { } // (3) 更新页面流元数据 - RouteMetataService.saveRouteMetadataContent(pageFlowMetadataEntity, appConfigInfo.getPageFlowMetadataID(), metadataEventArgs.getMetadata().getRelativePath()); + if(TerminalType.MOBILE.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType())){ + RouteMetataService.saveRouteMetadataContent(pageFlowMetadataEntity, appConfigInfo.getMobilePageFlowMetadataID(), metadataEventArgs.getMetadata().getRelativePath()); + + }else{ + RouteMetataService.saveRouteMetadataContent(pageFlowMetadataEntity, appConfigInfo.getPageFlowMetadataID(), metadataEventArgs.getMetadata().getRelativePath()); + + } log.debug("Debug_PageFlowMetadataDeleteEventListener_SyncPageFlowMetadata: Done."); } -- Gitee From a442da733e1def5920e4fc2bd41ffb9fef14545d Mon Sep 17 00:00:00 2001 From: lijiangkun Date: Tue, 14 Mar 2023 11:38:54 +0800 Subject: [PATCH 16/31] =?UTF-8?q?=E5=88=A0=E9=99=A4eapi=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/formmetadata/event/FormMetadataSaveEventListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 cf2cf67f..29d861cd 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 @@ -163,7 +163,7 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { String formMetadataStr = ((FormMetadataContent) metadataEventArgs.getMetadata().getContent()).getContents().toString(); FormDOM formDOM = SerializeUtility.getInstance().deserialize(formMetadataStr, FormDOM.class); if (formDOM.getModule().getSchemas() != null && formDOM.getModule().getSchemas().size() > 0) { - deleteRelateEapiMetadata(projectPath, formDOM); + deleteRelateEapiMetadata(projectPath, formDOM,metadataEventArgs.getMetadata()); } // 获取待删除的命令元数据 命令构件 ts文件 -- Gitee From 6243f95f9f067b312a9344906f058fae68554e32 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Tue, 14 Mar 2023 12:36:05 +0800 Subject: [PATCH 17/31] =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inspur/edp/web/common/GSPException.java | 4 +- .../customexception/WebCustomException.java | 46 +++++++++++++++++++ .../web/common/metadata/MetadataUtility.java | 23 +++++----- .../MetadataContentCloneManager.java | 4 +- .../GspViewModelCloneAdjustStrategy.java | 4 +- .../build/FrontendProjectBuild.java | 8 ++-- 6 files changed, 66 insertions(+), 23 deletions(-) create mode 100644 web-common/src/main/java/com/inspur/edp/web/common/customexception/WebCustomException.java diff --git a/web-common/src/main/java/com/inspur/edp/web/common/GSPException.java b/web-common/src/main/java/com/inspur/edp/web/common/GSPException.java index f30e1798..beb135ee 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/GSPException.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/GSPException.java @@ -32,9 +32,7 @@ public class GSPException extends CAFRuntimeException { super("", exceptionCode, exceptionMessage, innerException); } - public GSPException(String exceptionCode, String exceptionMessage, Exception cause, ExceptionLevel errorLevel, boolean bizException) { - super("", exceptionCode, exceptionMessage, cause, errorLevel, bizException); - } + public GSPException(String exceptionCode, String exceptionMessage, RuntimeException exception, ExceptionLevel errorLevel) { super("", exceptionCode, exceptionMessage, exception, errorLevel); diff --git a/web-common/src/main/java/com/inspur/edp/web/common/customexception/WebCustomException.java b/web-common/src/main/java/com/inspur/edp/web/common/customexception/WebCustomException.java new file mode 100644 index 00000000..1205cd60 --- /dev/null +++ b/web-common/src/main/java/com/inspur/edp/web/common/customexception/WebCustomException.java @@ -0,0 +1,46 @@ +/* + * 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.common.customexception; + +import io.iec.edp.caf.commons.exception.CAFRuntimeException; +import io.iec.edp.caf.commons.exception.ExceptionLevel; + +/** + * web 自定义异常 对界面的提示异常,无需捕获其堆栈 + * + * @author guozhiqi + */ +public class WebCustomException extends CAFRuntimeException { + + public WebCustomException(String message, ExceptionLevel level, boolean bizException) { + super("", "", message, null, level, bizException); + } + + /** + * 自定义异常类 构造的异常为业务异常 + * + * @param message 异常信息 + * @param level 日志级别 + */ + public WebCustomException(String message, ExceptionLevel level) { + this(message, level, true); + } + + public WebCustomException(String serviceUnitCode, String exceptionCode, String message, Exception innerException, ExceptionLevel level, boolean bizException) { + super(serviceUnitCode, exceptionCode, message, innerException, level, bizException); + } +} 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 8abb3772..c86a40bb 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 @@ -53,22 +53,22 @@ import java.util.List; public final class MetadataUtility { @Autowired - MetadataService metadataService; + private MetadataService metadataService; @Autowired - RefCommonService refCommonService; + private RefCommonService refCommonService; @Autowired - MetadataProjectService metadataProjectService; + private MetadataProjectService metadataProjectService; @Autowired - GspProjectService gspProjectService; + private GspProjectService gspProjectService; @Autowired - CustomizationService customizationService; + private CustomizationService customizationService; @Autowired - CustomizationServerService customizationServerService; + private CustomizationServerService customizationServerService; public MetadataService getMetadataService() { if (metadataService == null) { @@ -212,7 +212,7 @@ public final class MetadataUtility { return this.getMetadataInDesign(metadataGetterParameter.getTargetMetadataUri(), metadataGetterParameter.getSourceMetadataUri(), metadataGetterParameter.getTargetMetadataSpacePath()); } - public GspMetadata getMetadataInDesign(MetadataURI targetMetadataUri, MetadataURI sourceMetadataUri, String projectPath) { + private GspMetadata getMetadataInDesign(MetadataURI targetMetadataUri, MetadataURI sourceMetadataUri, String projectPath) { return this.getRefCommonService().getRefMetadata(targetMetadataUri, sourceMetadataUri, projectPath); } @@ -234,7 +234,7 @@ public final class MetadataUtility { * @param metadata 待保存元数据 */ public void createMetadataIfNotExists(GspMetadata metadata) { - MetadataService metadataService = SpringBeanUtils.getBean(MetadataService.class); + MetadataService metadataService = this.getMetadataService(); // 元数据文件不存在时进行创建 if (!metadataService.isMetadataExist(metadata.getRelativePath(), metadata.getHeader().getFileName())) { metadataService.createMetadata(metadata.getRelativePath(), metadata); @@ -252,8 +252,8 @@ public final class MetadataUtility { if (StringUtility.isNullOrEmpty(metadataFileName)) { return; } - MetadataService metadataService = SpringBeanUtils.getBean(MetadataService.class); - metadataService.deleteMetadata(metadataPath, metadataFileName); + + this.getMetadataService().deleteMetadata(metadataPath, metadataFileName); } private List getRefResourceMetadataCollection(String formMetadataId, String formMetadataPath) { @@ -360,8 +360,7 @@ public final class MetadataUtility { * @param metadata */ public void saveMetadata(GspMetadata metadata) { - MetadataService metadataService = SpringBeanUtils.getBean(MetadataService.class); - metadataService.saveMetadata(metadata, Paths.get(metadata.getRelativePath()).resolve(metadata.getHeader().getFileName()).toString()); + this.getMetadataService().saveMetadata(metadata, Paths.get(metadata.getRelativePath()).resolve(metadata.getHeader().getFileName()).toString()); } /** diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetadataContentCloneManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetadataContentCloneManager.java index 55fca7f1..3c9f7fd4 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetadataContentCloneManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetadataContentCloneManager.java @@ -22,7 +22,7 @@ import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.api.entity.MetadataDto; import com.inspur.edp.lcm.metadata.common.configuration.MetadataSerializerHelper; import com.inspur.edp.lcm.metadata.spi.MetadataContentSerializer; -import com.inspur.edp.web.common.GSPException; +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; @@ -40,7 +40,7 @@ class MetadataContentCloneManager { MetadataContentSerializer transferSerializerManager = MetadataSerializerHelper.getInstance().getManager(sourceMetadata.getHeader().getType()); if (transferSerializerManager == null) { WebLogger.Instance.error("未能正常获取元数据传输序列化器,请检查配置,对应元数据类型为:" + sourceMetadata.getHeader().getType()); - throw new GSPException("", "未能正常获取元数据传输序列化器,请检查配置,对应元数据类型为:" + sourceMetadata.getHeader().getType(), null, ExceptionLevel.Error, false); + throw new WebCustomException("未能正常获取元数据传输序列化器,请检查配置,对应元数据类型为:" + sourceMetadata.getHeader().getType(), ExceptionLevel.Error); } if (metadataDto != null && StringUtility.isNotNullOrEmpty(metadataDto.getContent())) { diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/adjust/GspViewModelCloneAdjustStrategy.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/adjust/GspViewModelCloneAdjustStrategy.java index 7ca659ef..b82b7d03 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/adjust/GspViewModelCloneAdjustStrategy.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/adjust/GspViewModelCloneAdjustStrategy.java @@ -21,7 +21,7 @@ import com.inspur.edp.lcm.metadata.api.IMetadataContent; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.common.configuration.MetadataSerializerHelper; import com.inspur.edp.lcm.metadata.spi.MetadataContentSerializer; -import com.inspur.edp.web.common.GSPException; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.serialize.SerializeUtility; import io.iec.edp.caf.commons.exception.ExceptionLevel; @@ -55,7 +55,7 @@ class GspViewModelCloneAdjustStrategy implements GspMetadataCloneAdjustStrategy MetadataContentSerializer transferSerializerManager = MetadataSerializerHelper.getInstance().getManager(replicateMetadata.getHeader().getType()); if (transferSerializerManager == null) { - throw new GSPException("", "未能正常获取元数据传输序列化器,请检查配置", null, ExceptionLevel.Error, false); + throw new WebCustomException("未能正常获取元数据传输序列化器,请检查配置", ExceptionLevel.Error); } diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/build/FrontendProjectBuild.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/build/FrontendProjectBuild.java index cb258a4e..19296a95 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/build/FrontendProjectBuild.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/build/FrontendProjectBuild.java @@ -17,9 +17,9 @@ package com.inspur.edp.web.frontendproject.build; import com.inspur.edp.web.common.GSPException; +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; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.frontendproject.FrontendProjectCompiler; import com.inspur.edp.web.frontendproject.FrontendProjectUtility; @@ -41,9 +41,9 @@ public class FrontendProjectBuild { projectPath = FrontendProjectUtility.getProjectPathWithDevRootPath(projectPath); if (StringUtility.isNullOrEmpty(projectPath)) { - throw new GSPException("WEB_BuildFrontendProject", "Current Project Path is Null or Empty", null, ExceptionLevel.Warning); + throw new WebCustomException("Current Project Path is Null or Empty", ExceptionLevel.Warning); } - + try { FrontendProjectCompiler frontendProjectCompiler = new FrontendProjectCompiler(); frontendProjectCompiler.buildFrontendProject(projectPath, isJieXiForm); @@ -57,7 +57,7 @@ public class FrontendProjectBuild { projectPath = FrontendProjectUtility.getProjectPathWithDevRootPath(projectPath); if (StringUtility.isNullOrEmpty(projectPath)) { - throw new GSPException("WEB_BuildFrontendProject", "Current Project Path is Null or Empty", null, ExceptionLevel.Warning); + throw new WebCustomException("Current Project Path is Null or Empty", ExceptionLevel.Warning); } //获取webdev路径 包含根路径 -- Gitee From eb43436ad7ef87b5040adb774757960b7c678693 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Tue, 14 Mar 2023 15:02:15 +0800 Subject: [PATCH 18/31] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edp/web/common/entity/TerminalType.java | 19 +- .../event/FormMetadataSaveEventListener.java | 536 +++++++++--------- 2 files changed, 276 insertions(+), 279 deletions(-) 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 279d08d1..cefe3a7e 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 @@ -242,9 +242,10 @@ public enum TerminalType { /** * 获取对应的框架类型 主要为Angular 或 Vue + * * @return */ - public abstract String getFrameworkType(); + public abstract String getFrameworkType(); /** * 获取表单相对路径,相对于metadata目录 @@ -315,6 +316,22 @@ public enum TerminalType { return suffixList; } + /** + * 根据源数据类型转换成对应的元数据类型 + * + * @param sourceMetadataType + * @return + */ + public static TerminalType fromMetadataType(String sourceMetadataType) { + if (TerminalType.PC.getMetadataType().equals(sourceMetadataType)) { + return TerminalType.PC; + } else if (TerminalType.MOBILE.getMetadataType().equals(sourceMetadataType)) { + return TerminalType.MOBILE; + } else { + throw new RuntimeException("未知的数据类型转换成TerminalType,对应数据类型为:" + sourceMetadataType); + } + } + /** * 关联页面流常量定义 */ 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 29d861cd..2f64bfde 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 @@ -37,6 +37,9 @@ import io.iec.edp.caf.commons.utils.SpringBeanUtils; import java.io.File; import java.util.ArrayList; import java.util.List; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Predicate; /** * @author guozhiqi @@ -79,45 +82,113 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { return; } - if (TerminalType.PC.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType())) { + + RelatedMetadataDeleteWhenFormMetadataDeleting relatedMetadataDeleteWhenFormMetadataDeleting = new RelatedMetadataDeleteWhenFormMetadataDeleting(metadataEventArgs); + relatedMetadataDeleteWhenFormMetadataDeleting.computeIfPresent(this::isPcOrMobileForm, relatedMetadataDeleteWhenFormMetadataDeleting::deleteRelatedMetadata); + } + + + @Override + public void fireMetadataDeletedEvent(MetadataEventArgs metadataEventArgs) { + if (metadataEventArgs == null || metadataEventArgs.getMetadata() == null + || metadataEventArgs.getMetadata().getHeader() == null) { + return; + } + + // 如果删除的是webcmp 那么在删除之后将对应的ts文件进行删除 + if ("WebComponent".equals(metadataEventArgs.getMetadata().getHeader().getType())) { + RelateTsFileDeleteWhenWebComponentDeleted relateTsFileDeleteWhenWebComponentDeleted=new RelateTsFileDeleteWhenWebComponentDeleted(metadataEventArgs); + relateTsFileDeleteWhenWebComponentDeleted.deleteTsFileAfterWebComponentDeleted(); + } + + if (this.isPcOrMobileForm(metadataEventArgs)) { + TerminalType terminalType = TerminalType.fromMetadataType(metadataEventArgs.getMetadata().getHeader().getType()); + RelateMetadataDeleteWhenFormMetadataDeleted relateMetadataDeleteWhenFormMetadataDeleted = new RelateMetadataDeleteWhenFormMetadataDeleted(metadataEventArgs); + relateMetadataDeleteWhenFormMetadataDeleted.deleteRelateMetadataAfterFormMetadataDeleted((metadataCode) -> relateMetadataDeleteWhenFormMetadataDeleted.generateDeleteList(metadataCode, terminalType)); + } + + // 如果是帮助元数据的删除 那么将其关联的res也要对应的删除 + if ("HelpMetadata".equals(metadataEventArgs.getMetadata().getHeader().getType())) { try { - // 获取表单元数据的文件名称 - String metaDataCode = metadataEventArgs.getMetadata().getHeader().getCode(); - String formMetadataRelativePath = metadataEventArgs.getMetadata().getRelativePath(); + RelateMetadataDeleteWhenHelpMetadataDeleted relateMetadataDeleteWhenHelpMetadataDeleted = new RelateMetadataDeleteWhenHelpMetadataDeleted(metadataEventArgs); + relateMetadataDeleteWhenHelpMetadataDeleted.deleteRelateHelpMetadata(); + } catch (Exception ex) { + WebLogger.Instance.error(ex); + } + } + } - MetadataProjectService metadataProjectService = SpringBeanUtils.getBean(MetadataProjectService.class); - MetadataProject projInfo = metadataProjectService.getMetadataProjInfo(formMetadataRelativePath); - String projectPath = projInfo.getProjectPath(); - //获取待删除的文件列表 仅删除当前目录下 - List relativeMetadataDeleteList = new ArrayList<>(); //generateDeleteList(metaDataCode, new File(formMetadataRelativePath)); + /** + * 判断是否是移动表单或PC表单类型 + * + * @param metadataEventArgs + * @return + */ + private boolean isPcOrMobileForm(MetadataEventArgs metadataEventArgs) { + return TerminalType.PC.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType()) || + TerminalType.MOBILE.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType()); + } + /** + * 表单元数据删除后将关联的文件进行删除 + * + * @author guozhiqi + */ + private class RelateMetadataDeleteWhenFormMetadataDeleted { + private MetadataEventArgs metadataEventArgs; - // 读取表单元数据 解析其中的eapiid - // 如果传递的表单元数据中内容为空 - if (metadataEventArgs.getMetadata().getContent() == null) { - GspMetadata metadata = MetadataUtility.getInstance().getMetadata(metadataEventArgs.getMetadata().getHeader().getFileName(), metadataEventArgs.getMetadata().getRelativePath()); - if (metadata != null) { - metadataEventArgs.getMetadata().setContent(metadata.getContent()); - } - } + public RelateMetadataDeleteWhenFormMetadataDeleted(MetadataEventArgs metadataEventArgs) { + this.metadataEventArgs = metadataEventArgs; + } - if (metadataEventArgs.getMetadata().getContent() != null) { - String formMetadataStr = ((FormMetadataContent) metadataEventArgs.getMetadata().getContent()).getContents().toString(); - FormDOM formDOM = SerializeUtility.getInstance().deserialize(formMetadataStr, FormDOM.class); - if (formDOM.getModule().getSchemas() != null && formDOM.getModule().getSchemas().size() > 0) { - deleteRelateEapiMetadata(projectPath, formDOM, metadataEventArgs.getMetadata()); - } + /** + * 构造待删除的文件列表 + * + * @param metaDataCode + * @param terminalType + * @return + */ + public List generateDeleteList(String metaDataCode, TerminalType terminalType) { + List deleteList = new ArrayList<>(); + String frmDotPrefix = metaDataCode + terminalType.getFormMetadataSuffix(); + // .frm 替换成为 _frm + String frmXiaPrefix = metaDataCode + terminalType.getFormMetadataSuffix().replace(".", "_"); + + // 表单关联资源文件 + deleteList.add(frmDotPrefix + ResourceMetadataType.EN.getSuffix()); + deleteList.add(frmDotPrefix + ResourceMetadataType.ZH_CH.getSuffix()); + deleteList.add(frmDotPrefix + ResourceMetadataType.ZH_CHT.getSuffix()); + + // 表单元数据json文件 + deleteList.add(frmXiaPrefix + ".json"); + + // 表单关联状态机 + deleteList.add(frmXiaPrefix + ".sm"); + + // 表单元数据 关联VO 及其资源元数据 + deleteList.add(frmXiaPrefix + ".vo"); + deleteList.add(frmXiaPrefix + ".vo.en.lres"); + deleteList.add(frmXiaPrefix + ".vo.res"); + deleteList.add(frmXiaPrefix + ".vo.zh-CHT.lres"); + + + return deleteList; + } - // 获取待删除的命令元数据 命令构件 ts文件 - try { - WebCommandMetadataDelete webCommandMetadataDelete = new WebCommandMetadataDelete(); - List webCmpAndTsDeleteList = webCommandMetadataDelete.generateWebCmpAndTsDeleteList(formDOM, projInfo); - relativeMetadataDeleteList.addAll(new ArrayList<>(webCmpAndTsDeleteList)); - } catch (Exception ex) { - WebLogger.Instance.error(ex); - } - } + /** + * 表单元数据删除后关联元数据删除 + */ + public void deleteRelateMetadataAfterFormMetadataDeleted(Function> relateMetadataDeleteListAction) { + if (relateMetadataDeleteListAction == null) { + return; + } + try { + // 获取表单元数据的文件名称 + String metaDataCode = this.metadataEventArgs.getMetadata().getHeader().getCode(); + String formMetadataRelativePath = this.metadataEventArgs.getMetadata().getRelativePath(); + //获取待删除的文件列表 仅删除当前目录下 + List relativeMetadataDeleteList = relateMetadataDeleteListAction.apply(metaDataCode); relativeMetadataDeleteList.forEach(t -> { File deleteFileInfo = new File(FileUtility.combine(formMetadataRelativePath, t)); if (deleteFileInfo.exists()) { @@ -125,19 +196,136 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { MetadataUtility.getInstance().getMetadataService().deleteMetadata(formMetadataRelativePath, t); } }); - - // 删除关联的表单源代码 - deleteRelateFormSourceCode(projectPath, projInfo.getName(), metaDataCode); - // 更新页面流元数据 - } catch (RuntimeException ex) { - WebLogger.Instance.error(ex); } catch (Exception ex) { WebLogger.Instance.error(ex); } + } + } + + /** + * Web Component 级联删除 + */ + private class RelateTsFileDeleteWhenWebComponentDeleted { + private MetadataEventArgs metadataEventArgs; + + public RelateTsFileDeleteWhenWebComponentDeleted(MetadataEventArgs metadataEventArgs) { + this.metadataEventArgs = metadataEventArgs; + } + + /** + * WebComponent 删除后删除对应的ts文件 + */ + private void deleteTsFileAfterWebComponentDeleted() { + String tsFileName = this.metadataEventArgs.getMetadata().getHeader().getCode() + ".ts"; + String tsFilePath = this.metadataEventArgs.getMetadata().getRelativePath(); + String tsFileNameAndPath = FileUtility.combine(tsFilePath, tsFileName); + try { + FileUtility.deleteFile(tsFileNameAndPath); + } catch (Exception ex) { + WebLogger.Instance.error(ex.getMessage() + ex.getStackTrace()); + } + } + } + + + /** + * 帮助元数据级联删除 + */ + private class RelateMetadataDeleteWhenHelpMetadataDeleted { + private MetadataEventArgs metadataEventArgs; + + public RelateMetadataDeleteWhenHelpMetadataDeleted(MetadataEventArgs metadataEventArgs) { + this.metadataEventArgs = metadataEventArgs; + } + + /** + * 删除帮助关联的元数据 + */ + private void deleteRelateHelpMetadata() { + String fileName = this.metadataEventArgs.getMetadata().getHeader().getFileName(); + String name = this.metadataEventArgs.getMetadata().getHeader().getName(); + String relativePath = this.metadataEventArgs.getMetadata().getRelativePath(); + String projectRelativePath = MetadataUtility.getInstance().getMetadataProjectPath(relativePath); + + String relateResource = ResourceMetadataType.ZH_CH.getFileName(fileName); + MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateResource); + + String relateEnResource = ResourceMetadataType.EN.getFileName(fileName); + MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateEnResource); + + String relateZh_CHTResource = ResourceMetadataType.ZH_CHT.getFileName(fileName); + MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateZh_CHTResource); + + // 删除帮助eapi + String eapiName = name + "_hlp.eapi"; + String eapiFilePath = FileUtility.combine(projectRelativePath, "eapi"); + MetadataUtility.getInstance().getMetadataService().deleteMetadata(eapiFilePath, eapiName); + + // 删除导航帮助 nav eapi + String navEapiName = name + "_hlp_nav.eapi"; + String navEapiFilePath = FileUtility.combine(projectRelativePath, "eapi"); + MetadataUtility.getInstance().getMetadataService().deleteMetadata(navEapiFilePath, navEapiName); + + // 删除导航帮助 nav + String relateNavVO = name + "_hlp_nav.vo"; + deleteHelpVoAndRelateMetadata(relateNavVO, relativePath); + + // 删除普通帮助 + String relateVO = name + "_hlp.vo"; + deleteHelpVoAndRelateMetadata(relateVO, relativePath); + } + + /** + * 删除帮助及其关联资源元数据 + * + * @param relateVO + * @param relativePath + */ + private void deleteHelpVoAndRelateMetadata(String relateVO, String relativePath) { + MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateVO); + + String relateVORes = ResourceMetadataType.ZH_CH.getFileName(relateVO); + MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateVORes); + + String relateVOEnRes = ResourceMetadataType.EN.getFileName(relateVO); + MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateVOEnRes); + String relateVOZHCHTRes = ResourceMetadataType.ZH_CHT.getFileName(relateVO); + MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateVOZHCHTRes); } + } + + /** + * 表单元数据删除 关联删除对应的元数据 + * 内部类 对外无需可见 + */ + private class RelatedMetadataDeleteWhenFormMetadataDeleting { - if (TerminalType.MOBILE.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType())) { + + private MetadataEventArgs metadataEventArgs; + + public RelatedMetadataDeleteWhenFormMetadataDeleting(MetadataEventArgs metadataEventArgs) { + this.metadataEventArgs = metadataEventArgs; + } + + /** + * 如果允许删除 那么执行关联元数据删除操作 + * + * @param predicateCanDelete + * @param deleteRelateMetadataAction + */ + public void computeIfPresent(Predicate predicateCanDelete, Consumer deleteRelateMetadataAction) { + if (deleteRelateMetadataAction != null && predicateCanDelete.test(this.metadataEventArgs)) { + deleteRelateMetadataAction.accept(this.metadataEventArgs); + } + } + + /** + * 删除关联元数据 + * + * @param metadataEventArgs + */ + public void deleteRelatedMetadata(MetadataEventArgs metadataEventArgs) { try { // 获取表单元数据的文件名称 String metaDataCode = metadataEventArgs.getMetadata().getHeader().getCode(); @@ -163,7 +351,7 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { String formMetadataStr = ((FormMetadataContent) metadataEventArgs.getMetadata().getContent()).getContents().toString(); FormDOM formDOM = SerializeUtility.getInstance().deserialize(formMetadataStr, FormDOM.class); if (formDOM.getModule().getSchemas() != null && formDOM.getModule().getSchemas().size() > 0) { - deleteRelateEapiMetadata(projectPath, formDOM,metadataEventArgs.getMetadata()); + deleteRelateEapiMetadata(projectPath, formDOM, metadataEventArgs.getMetadata()); } // 获取待删除的命令元数据 命令构件 ts文件 @@ -192,253 +380,45 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { } catch (Exception ex) { WebLogger.Instance.error(ex); } - - } - - } - - /** - * 删除关联的源代码目录文件 - * - * @param projectPath - * @param projectName - * @param formCode - */ - private void deleteRelateFormSourceCode(String projectPath, String projectName, String formCode) { - String sourceCodeSrcPath = FileUtility.combineOptional(projectPath, "src", "app", "projects", projectName.toLowerCase(), "src"); - String sourceCodeFormPath = FileUtility.combine(sourceCodeSrcPath, "app", formCode.toLowerCase()); - if (FileUtility.exists(sourceCodeFormPath)) { - FileUtility.deleteFolder(sourceCodeFormPath); - } - } - - @Override - public void fireMetadataDeletedEvent(MetadataEventArgs metadataEventArgs) { - if (metadataEventArgs == null || metadataEventArgs.getMetadata() == null - || metadataEventArgs.getMetadata().getHeader() == null) { - return; - } - - // 如果删除的是webcmp 那么在删除之后将对应的ts文件进行删除 - if ("WebComponent".equals(metadataEventArgs.getMetadata().getHeader().getType())) { - deleteTsFileAfterWebComponentDeleted(metadataEventArgs); - } - - if (TerminalType.PC.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType())) { - deleteRelateMetadataAfterFormMetadataDeleted(metadataEventArgs); - } - - if (TerminalType.MOBILE.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType())) { - deleteRelateMetadataAfterMobileFormMetadataDeleted(metadataEventArgs); - } - - - // 如果是帮助元数据的删除 那么将其关联的res也要对应的删除 - if ("HelpMetadata".equals(metadataEventArgs.getMetadata().getHeader().getType())) { - try { - deleteRelateHelpMetadata(metadataEventArgs); - } catch (Exception ex) { - WebLogger.Instance.error(ex); - } } - } - /** - * 表单元数据删除后关联元数据删除 - * - * @param metadataEventArgs - */ - private void deleteRelateMetadataAfterFormMetadataDeleted(MetadataEventArgs metadataEventArgs) { - try { - // 获取表单元数据的文件名称 - String metaDataCode = metadataEventArgs.getMetadata().getHeader().getCode(); - String formMetadataRelativePath = metadataEventArgs.getMetadata().getRelativePath(); - - //获取待删除的文件列表 仅删除当前目录下 - List relativeMetadataDeleteList = generateDeleteList(metaDataCode, new File(formMetadataRelativePath)); - relativeMetadataDeleteList.forEach(t -> { - File deleteFileInfo = new File(FileUtility.combine(formMetadataRelativePath, t)); - if (deleteFileInfo.exists()) { - // 执行元数据删除 - MetadataUtility.getInstance().getMetadataService().deleteMetadata(formMetadataRelativePath, t); - } - }); - } catch (Exception ex) { - WebLogger.Instance.error(ex); - } - } - /** - * 表单元数据删除后关联元数据删除 - * @param metadataEventArgs - */ - private void deleteRelateMetadataAfterMobileFormMetadataDeleted(MetadataEventArgs metadataEventArgs) { - try { - // 获取表单元数据的文件名称 - String metaDataCode = metadataEventArgs.getMetadata().getHeader().getCode(); - String formMetadataRelativePath = metadataEventArgs.getMetadata().getRelativePath(); - - //获取待删除的文件列表 仅删除当前目录下 - List relativeMetadataDeleteList = generateMobileDeleteList(metaDataCode, new File(formMetadataRelativePath)); - relativeMetadataDeleteList.forEach(t -> { - File deleteFileInfo = new File(FileUtility.combine(formMetadataRelativePath, t)); - if (deleteFileInfo.exists()) { - // 执行元数据删除 - MetadataUtility.getInstance().getMetadataService().deleteMetadata(formMetadataRelativePath, t); + /** + * 删除关联的eapi元数据 + * + * @param projectPath + * @param formDOM + */ + private void deleteRelateEapiMetadata(String projectPath, FormDOM formDOM, GspMetadata sourceFormMetadata) { + Object objEapiId = formDOM.getModule().getSchemas().get(0).get("eapiId"); + if (objEapiId != null) { + String strEapiId = objEapiId.toString(); + + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(strEapiId, projectPath); + metadataGetterParameter.setSourceMetadata(sourceFormMetadata, MetadataTypeEnum.Frm); + GspMetadata eapiMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + if (eapiMetadata != null) { + // eapi 单独删除 + MetadataUtility.getInstance().getMetadataService().deleteMetadata(eapiMetadata.getRelativePath(), eapiMetadata.getHeader().getFileName()); } - }); - } catch (Exception ex) { - WebLogger.Instance.error(ex); - } - } - - /** - * WebComponent 删除后删除对应的ts文件 - * - * @param metadataEventArgs - */ - private void deleteTsFileAfterWebComponentDeleted(MetadataEventArgs metadataEventArgs) { - String tsFileName = metadataEventArgs.getMetadata().getHeader().getCode() + ".ts"; - String tsFilePath = metadataEventArgs.getMetadata().getRelativePath(); - String tsFileNameAndPath = FileUtility.combine(tsFilePath, tsFileName); - try { - FileUtility.deleteFile(tsFileNameAndPath); - } catch (Exception ex) { - WebLogger.Instance.error(ex.getMessage() + ex.getStackTrace()); + } } - } - - /** - * 删除帮助关联的元数据 - * - * @param metadataEventArgs - */ - private void deleteRelateHelpMetadata(MetadataEventArgs metadataEventArgs) { - String fileName = metadataEventArgs.getMetadata().getHeader().getFileName(); - String name = metadataEventArgs.getMetadata().getHeader().getName(); - String relativePath = metadataEventArgs.getMetadata().getRelativePath(); - String projectRelativePath = MetadataUtility.getInstance().getMetadataProjectPath(relativePath); - - String relateResource = ResourceMetadataType.ZH_CH.getFileName(fileName); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateResource); - - String relateEnResource = ResourceMetadataType.EN.getFileName(fileName); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateEnResource); - - String relateZh_CHTResource = ResourceMetadataType.ZH_CHT.getFileName(fileName); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateZh_CHTResource); - - // 删除帮助eapi - String eapiName = name + "_hlp.eapi"; - String eapiFilePath = FileUtility.combine(projectRelativePath, "eapi"); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(eapiFilePath, eapiName); - - // 删除导航帮助 nav eapi - String navEapiName = name + "_hlp_nav.eapi"; - String navEapiFilePath = FileUtility.combine(projectRelativePath, "eapi"); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(navEapiFilePath, navEapiName); - - // 删除导航帮助 nav - String relateNavVO = name + "_hlp_nav.vo"; - deleteHelpVoAndRelateMetadata(relateNavVO, relativePath); - - // 删除普通帮助 - String relateVO = name + "_hlp.vo"; - deleteHelpVoAndRelateMetadata(relateVO, relativePath); - } - - /** - * 删除帮助及其关联资源元数据 - * - * @param relateVO - * @param relativePath - */ - private void deleteHelpVoAndRelateMetadata(String relateVO, String relativePath) { - MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateVO); - - String relateVORes = ResourceMetadataType.ZH_CH.getFileName(relateVO); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateVORes); - String relateVOEnRes = ResourceMetadataType.EN.getFileName(relateVO); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateVOEnRes); - - String relateVOZHCHTRes = ResourceMetadataType.ZH_CHT.getFileName(relateVO); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateVOZHCHTRes); - } - /** - * 删除关联的eapi元数据 - * - * @param projectPath - * @param formDOM - */ - private void deleteRelateEapiMetadata(String projectPath, FormDOM formDOM, GspMetadata sourceFormMetadata) { - Object objEapiId = formDOM.getModule().getSchemas().get(0).get("eapiId"); - if (objEapiId != null) { - String strEapiId = objEapiId.toString(); - - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(strEapiId, projectPath); - metadataGetterParameter.setSourceMetadata(sourceFormMetadata, MetadataTypeEnum.Frm); - GspMetadata eapiMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); - if (eapiMetadata != null) { - // eapi 单独删除 - MetadataUtility.getInstance().getMetadataService().deleteMetadata(eapiMetadata.getRelativePath(), eapiMetadata.getHeader().getFileName()); + /** + * 删除关联的源代码目录文件 + * + * @param projectPath + * @param projectName + * @param formCode + */ + private void deleteRelateFormSourceCode(String projectPath, String projectName, String formCode) { + String sourceCodeSrcPath = FileUtility.combineOptional(projectPath, "src", "app", "projects", projectName.toLowerCase(), "src"); + String sourceCodeFormPath = FileUtility.combine(sourceCodeSrcPath, "app", formCode.toLowerCase()); + if (FileUtility.exists(sourceCodeFormPath)) { + FileUtility.deleteFolder(sourceCodeFormPath); } } } - - private List generateDeleteList(String metaDataCode, File relativePath) { - List deleteList = new ArrayList<>(); - String frmDotPrefix = metaDataCode + ".frm"; - String frmXiaPrefix = metaDataCode + "_frm"; - - // 表单关联资源文件 - deleteList.add(frmDotPrefix + ResourceMetadataType.EN.getSuffix()); - deleteList.add(frmDotPrefix + ResourceMetadataType.ZH_CH.getSuffix()); - deleteList.add(frmDotPrefix + ResourceMetadataType.ZH_CHT.getSuffix()); - - // 表单元数据json文件 - deleteList.add(frmXiaPrefix + ".json"); - - // 表单关联状态机 - deleteList.add(frmXiaPrefix + ".sm"); - - // 表单元数据 关联VO 及其资源元数据 - deleteList.add(frmXiaPrefix + ".vo"); - deleteList.add(frmXiaPrefix + ".vo.en.lres"); - deleteList.add(frmXiaPrefix + ".vo.res"); - deleteList.add(frmXiaPrefix + ".vo.zh-CHT.lres"); - - - return deleteList; - } - - private List generateMobileDeleteList(String metaDataCode, File relativePath) { - List deleteList = new ArrayList<>(); - String frmDotPrefix = metaDataCode + ".mfrm"; - String frmXiaPrefix = metaDataCode + "_mfrm"; - - // 表单关联资源文件 - deleteList.add(frmDotPrefix + ".en.lres"); - deleteList.add(frmDotPrefix + ".res"); - deleteList.add(frmDotPrefix + ".zh-CHT.lres"); - - // 表单元数据json文件 - deleteList.add(frmXiaPrefix + ".json"); - - // 表单关联状态机 - deleteList.add(frmXiaPrefix + ".sm"); - - // 表单元数据 关联VO 及其资源元数据 - deleteList.add(frmXiaPrefix + ".vo"); - deleteList.add(frmXiaPrefix + ".vo.en.lres"); - deleteList.add(frmXiaPrefix + ".vo.res"); - deleteList.add(frmXiaPrefix + ".vo.zh-CHT.lres"); - - - return deleteList; - } - - } -- Gitee From 56cd05c114d448bf1ba18e8c89fd80e57472a699 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Wed, 15 Mar 2023 11:10:12 +0800 Subject: [PATCH 19/31] =?UTF-8?q?=E5=A2=9E=E5=8A=A0reservationTitle?= =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E5=8F=82=E6=95=B0=E6=8F=90=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/formmetadata/i18n/component/ComponentUtility.java | 4 ++++ .../AppointmentCalendarResourceStrategy.java | 7 +++++++ 2 files changed, 11 insertions(+) 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 4d5133f1..6c535abc 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 @@ -321,6 +321,10 @@ public class ComponentUtility { return this.getValue(component, "placeTitle"); } + public final String getReservationTitle(HashMap component) { + return this.getValue(component, "reservationTitle"); + } + public final String getPlaceHolder(HashMap component, String placeHolder) { return this.getValue(component, placeHolder); } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/AppointmentCalendarResourceStrategy.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/AppointmentCalendarResourceStrategy.java index bfb4ef27..ee13716b 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/AppointmentCalendarResourceStrategy.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/AppointmentCalendarResourceStrategy.java @@ -54,6 +54,13 @@ public class AppointmentCalendarResourceStrategy extends AbstractI18nResourceStr I18nResourceItem i18nPlaceholderResourceItem = I18nResourceItemManager.createI18nResourceItem(i18nResourceItemBaseId, generatedPlaceTitleComponentId, placeTitleValue, placeTitleValue); i18nResourceItemCollection.add(i18nPlaceholderResourceItem); + // 提取placeTitle参数 + String reservationTitleValue = ComponentUtility.getInstance().getReservationTitle(currentComponent); + String reservationTitleName = "reservationTitle"; + String generatedreservationTitleComponentId = currentComponentType + "/" + currentComponentId + "/" + reservationTitleName; + I18nResourceItem i18nReservationTitleResourceItem = I18nResourceItemManager.createI18nResourceItem(i18nResourceItemBaseId, generatedreservationTitleComponentId, reservationTitleValue, reservationTitleValue); + i18nResourceItemCollection.add(i18nReservationTitleResourceItem); + return i18nResourceItemCollection; } } -- Gitee From 71ace9e1d0177b98c571e8795cbcca1aae72fb6f Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Mon, 27 Mar 2023 15:28:38 +0800 Subject: [PATCH 20/31] =?UTF-8?q?=E5=A2=9E=E5=8A=A0reservationTitle?= =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E5=8F=82=E6=95=B0=E6=8F=90=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dynamicform/web-dynamic-form-core/pom.xml | 6 ---- pom.xml | 7 ++-- web-dynamic-form-api/pom.xml | 5 --- .../api/entity/DynamicFormCreateEntity.java | 36 +++++++++++++++++++ .../api/webservice/DynamicFormWebService.java | 7 ++-- web-dynamic-form-core/pom.xml | 5 --- .../DynamicCreateFormMetadataServiceImpl.java | 17 +++++---- .../webservice/DynamicFormWebServiceImpl.java | 17 ++++----- .../HtmlTemplateI18nResourceStrategy.java | 4 ++- .../HtmlTemplateI18nResourceStrategyTest.java | 3 ++ web-form-process-api/pom.xml | 5 --- web-npmpackage-patch/pom.xml | 6 ---- 12 files changed, 68 insertions(+), 50 deletions(-) create mode 100644 web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/DynamicFormCreateEntity.java diff --git a/dynamicform/web-dynamic-form-core/pom.xml b/dynamicform/web-dynamic-form-core/pom.xml index 677d3380..d0f08f7d 100644 --- a/dynamicform/web-dynamic-form-core/pom.xml +++ b/dynamicform/web-dynamic-form-core/pom.xml @@ -27,10 +27,4 @@ web-dynamic-form-core - - 8 - 8 - UTF-8 - - \ No newline at end of file diff --git a/pom.xml b/pom.xml index 1c885a88..f58dd384 100644 --- a/pom.xml +++ b/pom.xml @@ -68,6 +68,7 @@ 1.8 1.8 1.8 + UTF-8 @@ -342,6 +343,7 @@ com.inspur.edp formserver-viewmodel 0.2.15 + compile com.inspur.edp @@ -540,11 +542,6 @@ 0.1.1 compile - - com.inspur.edp - lcm-metadata-spi - 0.1.37 - diff --git a/web-dynamic-form-api/pom.xml b/web-dynamic-form-api/pom.xml index e1ca9995..48e41c2d 100644 --- a/web-dynamic-form-api/pom.xml +++ b/web-dynamic-form-api/pom.xml @@ -27,11 +27,6 @@ web-dynamicform-api - - 8 - 8 - UTF-8 - com.inspur.edp diff --git a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/DynamicFormCreateEntity.java b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/DynamicFormCreateEntity.java new file mode 100644 index 00000000..76f4f2b3 --- /dev/null +++ b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/entity/DynamicFormCreateEntity.java @@ -0,0 +1,36 @@ +/* + * 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.dynamicform.core.api.entity; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class DynamicFormCreateEntity implements Serializable { + private static final long serialVersionUID = 1L; + + private String bizObjectId; + + private String eapiMetadataId; + + private String eapiSourceUri; + + private String voMetadataId; + + +} diff --git a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/webservice/DynamicFormWebService.java b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/webservice/DynamicFormWebService.java index 7431d5c0..74c6b2cb 100644 --- a/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/webservice/DynamicFormWebService.java +++ b/web-dynamic-form-api/src/main/java/com/inspur/edp/web/dynamicform/core/api/webservice/DynamicFormWebService.java @@ -17,9 +17,12 @@ package com.inspur.edp.web.dynamicform.core.api.webservice; import com.inspur.edp.web.common.entity.ResultMessage; +import com.inspur.edp.web.dynamicform.core.api.entity.DynamicFormCreateEntity; +import org.springframework.web.bind.annotation.RequestBody; import javax.ws.rs.Consumes; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.core.MediaType; @@ -36,8 +39,8 @@ public interface DynamicFormWebService { * * @return */ - @GET + @POST @Path("/createform") @Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN}) - ResultMessage create(); + ResultMessage create(@RequestBody DynamicFormCreateEntity createEntity); } diff --git a/web-dynamic-form-core/pom.xml b/web-dynamic-form-core/pom.xml index e8cb63c8..fbac8213 100644 --- a/web-dynamic-form-core/pom.xml +++ b/web-dynamic-form-core/pom.xml @@ -27,11 +27,6 @@ web-dynamicform-core - - 8 - 8 - UTF-8 - com.inspur.edp diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java index e2c42ed3..cc26d5f0 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java @@ -278,6 +278,7 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe String fieldEditorType = ((SimpleField) fieldItem).getEditor().get$type(); QuerySchemaField.QuerySchemaFieldControl querySchemaFieldControl = null; + boolean hasFieldControl = true; switch (fieldEditorType) { case "TextBox": querySchemaFieldControl = new QuerySchemaField.QuerySchemaTextFieldControl(); @@ -320,17 +321,19 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe querySchemaFieldControl = querySchemaDropdownFieldControlWithCheckBox; break; default: - querySchemaFieldControl = new QuerySchemaField.QuerySchemaFieldControl(); + hasFieldControl = false; WebLogger.Instance.info("筛选方案字段构造,未匹配到合适的Editor 类型,使用默认的text类型"); break; } + if (hasFieldControl) { + querySchemaFieldControl.setId(fieldItem.getId()); + querySchemaFieldControl.setRequire(false); + querySchemaField.setControl(querySchemaFieldControl); - querySchemaFieldControl.setId(fieldItem.getId()); - querySchemaFieldControl.setRequire(false); - querySchemaField.setControl(querySchemaFieldControl); - - return querySchemaField; - }).collect(Collectors.toList()); + return querySchemaField; + } + return null; + }).filter(t -> t != null).collect(Collectors.toList()); contentItem.put("fieldConfigs", querySchemaFieldList); contentItem.put("presetFieldConfigs", querySchemaFieldList); } diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java index c3ba3884..1f404c79 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java @@ -20,6 +20,7 @@ import com.inspur.edp.web.common.entity.ResultCode; import com.inspur.edp.web.common.entity.ResultMessage; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.dynamicform.core.api.entity.DynamicCreateFormMetadataParameter; +import com.inspur.edp.web.dynamicform.core.api.entity.DynamicFormCreateEntity; import com.inspur.edp.web.dynamicform.core.api.entity.FormMetadataInfo; import com.inspur.edp.web.dynamicform.core.api.entity.FormMetadataTemplateInfo; import com.inspur.edp.web.dynamicform.core.api.service.DynamicCreateFormMetadataService; @@ -33,14 +34,14 @@ import io.iec.edp.caf.commons.utils.SpringBeanUtils; */ public class DynamicFormWebServiceImpl implements DynamicFormWebService { @Override - public ResultMessage create() { + public ResultMessage create(DynamicFormCreateEntity createEntity) { ResultMessage resultMessage = ResultCode.success(); DynamicCreateFormMetadataService dynamicCreateFormMetadataService = SpringBeanUtils.getBean(DynamicCreateFormMetadataService.class); DynamicCreateFormMetadataParameter parameter = new DynamicCreateFormMetadataParameter(); - parameter.setBizobjectID("e52935d0-8956-2325-78d7-ecd19b9baab5"); + parameter.setBizobjectID(createEntity.getBizObjectId()); parameter.setProjectCode("testaddproj"); parameter.setProjectPath("testadd/testaddmodule/testaddproj/bo-testaddprojfront/metadata"); @@ -50,10 +51,10 @@ public class DynamicFormWebServiceImpl implements DynamicFormWebService { formMetadataInfo.setCode("testaddcreate9"); formMetadataInfo.setName("testaddcreate9"); - formMetadataInfo.setEapiMetadataId("cb90d62a-6d08-45df-a286-1d9f37ac0a50"); + formMetadataInfo.setEapiMetadataId(createEntity.getEapiMetadataId()); // 设置eapi暴露的uri地址 - formMetadataInfo.setEapiSourceUri("api/pj542134app/pj542134su/v1.0/pj542134vo"); - formMetadataInfo.setVoMetadataId("90c53a38-14a3-4722-98f5-48da135dd8ee"); + formMetadataInfo.setEapiSourceUri(createEntity.getEapiSourceUri()); + formMetadataInfo.setVoMetadataId(createEntity.getVoMetadataId()); FormMetadataTemplateInfo formMetadataTemplateInfo = new FormMetadataTemplateInfo(); // 列表使用的模板 new-list-template @@ -68,10 +69,10 @@ public class DynamicFormWebServiceImpl implements DynamicFormWebService { formMetadataInfoCard.setCode("testaddcreate9_card"); formMetadataInfoCard.setName("testaddcreate9_card"); - formMetadataInfoCard.setEapiMetadataId("cb90d62a-6d08-45df-a286-1d9f37ac0a50"); + formMetadataInfoCard.setEapiMetadataId(createEntity.getEapiMetadataId()); // 设置eapi暴露的uri地址 - formMetadataInfoCard.setEapiSourceUri("api/pj542134app/pj542134su/v1.0/pj542134vo"); - formMetadataInfoCard.setVoMetadataId("90c53a38-14a3-4722-98f5-48da135dd8ee"); + formMetadataInfoCard.setEapiSourceUri(createEntity.getEapiSourceUri()); + formMetadataInfoCard.setVoMetadataId(createEntity.getVoMetadataId()); FormMetadataTemplateInfo formMetadataTemplateInfoCard = new FormMetadataTemplateInfo(); // 列表使用的模板 new-list-template diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategy.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategy.java index d34a10c1..661e8c6b 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategy.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategy.java @@ -87,7 +87,8 @@ public class HtmlTemplateI18nResourceStrategy extends AbstractI18nResourceStrate // 按照 lang:lang:'defaultValue'的形式 String componentDefaultLangValue = getLangDefaultValue(componentLangValue); if (componentDefaultLangValue == null) { - return i18nResourceItemCollection; + // 进行下一个的Html标签解析 + continue; } // 构造对应的国际化key @@ -98,6 +99,7 @@ public class HtmlTemplateI18nResourceStrategy extends AbstractI18nResourceStrate I18nResourceItem i18nResourceItem = I18nResourceItemManager.createI18nResourceItem(i18nResourceItemBaseId, generatedComponentId, componentDefaultLangValue, componentDefaultLangValue); i18nResourceItemCollection.add(i18nResourceItem); + // 添加到资源项集合 } } } diff --git a/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategyTest.java b/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategyTest.java index cd3e24e1..de64bd96 100644 --- a/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategyTest.java +++ b/web-form-metadata/src/test/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategyTest.java @@ -22,6 +22,9 @@ public class HtmlTemplateI18nResourceStrategyTest { this.specificPattern = Pattern.compile("\\$\\{([^\\}]+):([^\\}]+)\\}"); } + + + @Test public void testExtractPattern() { String source = "fshjkfshkjfsdhjfk{{'dsdsdsds'|lang:lang:'6666666'}}hfghfghgfhfgh"; diff --git a/web-form-process-api/pom.xml b/web-form-process-api/pom.xml index c3c45db1..c6bb8347 100644 --- a/web-form-process-api/pom.xml +++ b/web-form-process-api/pom.xml @@ -27,9 +27,4 @@ web-form-process-api - - 8 - 8 - - \ No newline at end of file diff --git a/web-npmpackage-patch/pom.xml b/web-npmpackage-patch/pom.xml index 93e5e63c..9e86df9c 100644 --- a/web-npmpackage-patch/pom.xml +++ b/web-npmpackage-patch/pom.xml @@ -32,10 +32,4 @@ jackson-databind - - - 8 - 8 - - -- Gitee From 07260e5adce7ede7c87f8d1173f6c2f0838f6fa5 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Thu, 30 Mar 2023 14:23:20 +0800 Subject: [PATCH 21/31] =?UTF-8?q?=E5=A2=9E=E5=8A=A0reservationTitle?= =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E5=8F=82=E6=95=B0=E6=8F=90=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edp/web/common/utility/StringUtility.java | 23 ++ .../web/common/utility/StringUtilityTest.java | 10 + .../CardTemplateEditorGenerator.java | 275 ++++++++++++++++++ .../HtmlTemplateI18nResourceStrategy.java | 20 +- .../entity/PageFlowMetadataEntityTest.java | 33 +++ 5 files changed, 349 insertions(+), 12 deletions(-) create mode 100644 web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/CardTemplateEditorGenerator.java create mode 100644 web-pageflow-metadata/src/test/java/com/inspur/edp/web/pageflow/metadata/entity/PageFlowMetadataEntityTest.java diff --git a/web-common/src/main/java/com/inspur/edp/web/common/utility/StringUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/utility/StringUtility.java index 85343bcb..8c037af8 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/utility/StringUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/utility/StringUtility.java @@ -18,6 +18,8 @@ package com.inspur.edp.web.common.utility; import org.apache.commons.lang3.StringUtils; +import java.util.Arrays; +import java.util.List; import java.util.function.Consumer; import java.util.function.Predicate; import java.util.regex.Matcher; @@ -374,4 +376,25 @@ public class StringUtility { c = Character.toLowerCase(c); return c; } + + /** + * 移除字符串两端指定的字符 + * + * @param source + * @param beTrim + * @return + */ + public static String trimStringWith(String source, List beTrim) { + int st = 0; + int len = source.length(); + char[] val = source.toCharArray(); + + while ((st < len) && (beTrim.contains(val[st]))) { + st++; + } + while ((st < len) && (beTrim.contains(val[len - 1]))) { + len--; + } + return ((st > 0) || (len < source.length())) ? source.substring(st, len) : source; + } } diff --git a/web-common/src/test/java/com/inspur/edp/web/common/utility/StringUtilityTest.java b/web-common/src/test/java/com/inspur/edp/web/common/utility/StringUtilityTest.java index 95cd34e9..18bdd110 100644 --- a/web-common/src/test/java/com/inspur/edp/web/common/utility/StringUtilityTest.java +++ b/web-common/src/test/java/com/inspur/edp/web/common/utility/StringUtilityTest.java @@ -1,7 +1,10 @@ package com.inspur.edp.web.common.utility; +import org.junit.Assert; import org.junit.Test; +import java.util.Arrays; + import static org.junit.Assert.*; public class StringUtilityTest { @@ -41,5 +44,12 @@ public class StringUtilityTest { } + @Test + public void testTrim() { + String source = "'\"fdfdfdfdf\'fdfdfdf\"'"; + String result = StringUtility.trimStringWith(source, Arrays.asList('\'')); + Assert.assertEquals(result, "fdfdfdfdf\'fdfdfdf"); + } + } \ No newline at end of file diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/CardTemplateEditorGenerator.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/CardTemplateEditorGenerator.java new file mode 100644 index 00000000..6201cad5 --- /dev/null +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/components/CardTemplateEditorGenerator.java @@ -0,0 +1,275 @@ +/* + * 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.dynamicform.core.components; + +import java.util.HashMap; + +/** + * card 模板 编辑器构造 + */ +public class CardTemplateEditorGenerator { + + public static HashMap generateWithEditorType(String editorType) { + HashMap editorHashMap = new HashMap<>(); + switch (editorType) { + case "ContentContainer": + editorHashMap.put("id", "container"); + editorHashMap.put("type", "ContentContainer"); + break; + case "ButtonGroup": + editorHashMap.put("id", "ButtonGroup"); + editorHashMap.put("type", "ButtonGroup"); + editorHashMap.put("appearance", "{class:\"btn-toolbar my-1 mx-2\"}"); + break; + case "Button": + editorHashMap.put("id", "button"); + editorHashMap.put("type", "Button"); + editorHashMap.put("text", ""); + editorHashMap.put("seperate", true); + editorHashMap.put("textAligment", "center"); + editorHashMap.put("visible", true); + editorHashMap.put("dataSourceType", "static"); + break; + case "TextBox": + editorHashMap.put("id", "textbox1"); + editorHashMap.put("type", "TextBox"); + editorHashMap.put("titleSourceType", "static"); + editorHashMap.put("title", "文本"); + editorHashMap.put("readonly", false); + editorHashMap.put("require", false); + editorHashMap.put("disable", false); + editorHashMap.put("placeHolder", ""); + editorHashMap.put("linkedLabelEnabled", false); + editorHashMap.put("visible", true); + editorHashMap.put("holdPlace", false); + editorHashMap.put("isTextArea", true); + editorHashMap.put("isPassword", false); + editorHashMap.put("hasDefaultFocus", false); + editorHashMap.put("enableTips", true); + break; + case "MultiTextBox": + editorHashMap.put("id", "multiTextBox1"); + editorHashMap.put("type", "MultiTextBox"); + editorHashMap.put("titleSourceType", "static"); + editorHashMap.put("title", "多行文本框"); + editorHashMap.put("readonly", false); + editorHashMap.put("require", false); + editorHashMap.put("disable", false); + editorHashMap.put("placeHolder", ""); + editorHashMap.put("linkedLabelEnabled", false); + editorHashMap.put("visible", true); + editorHashMap.put("holdPlace", false); + editorHashMap.put("isTextArea", true); + editorHashMap.put("hasDefaultFocus", false); + editorHashMap.put("enableTips", true); + editorHashMap.put("autoHeight", false); + break; + case "NumericBox": + editorHashMap.put("id", "numericBox1"); + editorHashMap.put("type", "NumericBox"); + editorHashMap.put("titleSourceType", "static"); + editorHashMap.put("title", "数值框"); + editorHashMap.put("controlSource", "Farris"); + editorHashMap.put("readonly", false); + editorHashMap.put("require", false); + editorHashMap.put("disable", false); + editorHashMap.put("placeHolder", ""); + editorHashMap.put("textAlign", "left"); + editorHashMap.put("precisionSourceType", "static"); + editorHashMap.put("step", 1); + editorHashMap.put("useThousands", true); + editorHashMap.put("bigNumber", false); + editorHashMap.put("holdPlace", false); + editorHashMap.put("linkedLabelEnabled", false); + editorHashMap.put("visible", false); + editorHashMap.put("isTextArea", true); + editorHashMap.put("hasDefaultFocus", false); + editorHashMap.put("showZero", true); + editorHashMap.put("showButton", true); + + break; + case "DateBox": + editorHashMap.put("id", "date"); + editorHashMap.put("type", "DateBox"); + editorHashMap.put("titleSourceType", "static"); + editorHashMap.put("title", "日期选择"); + editorHashMap.put("controlSource", "Farris"); + editorHashMap.put("readonly", false); + editorHashMap.put("require", false); + editorHashMap.put("disable", false); + editorHashMap.put("editable", true); + editorHashMap.put("dateRange", false); + editorHashMap.put("showTime", false); + editorHashMap.put("showType", 1); + editorHashMap.put("dateFormat", "yyyy-MM-dd"); + editorHashMap.put("returnFormat", "yyyy-MM-dd"); + editorHashMap.put("showWeekNumbers", false); + editorHashMap.put("dateRangeDatesDelimiter", "~"); + editorHashMap.put("useDefault", false); + editorHashMap.put("placeHolder", ""); + editorHashMap.put("textAlign", "left"); + editorHashMap.put("precisionSourceType", "static"); + editorHashMap.put("step", 1); + editorHashMap.put("useThousands", true); + editorHashMap.put("bigNumber", false); + editorHashMap.put("holdPlace", false); + editorHashMap.put("linkedLabelEnabled", false); + editorHashMap.put("visible", false); + editorHashMap.put("isTextArea", true); + editorHashMap.put("hasDefaultFocus", false); + editorHashMap.put("localization", false); + break; + case "CheckBox": + editorHashMap.put("id", "checkBox1"); + editorHashMap.put("type", "CheckBox"); + editorHashMap.put("titleSourceType", "static"); + editorHashMap.put("title", "复选框"); + editorHashMap.put("checked", false); + editorHashMap.put("readonly", false); + editorHashMap.put("require", false); + editorHashMap.put("disable", false); + editorHashMap.put("visible", true); + editorHashMap.put("linkedLabelEnabled", false); + editorHashMap.put("holdPlace", false); + editorHashMap.put("hasDefaultFocus", false); + break; + case "EnumField": + editorHashMap.put("id", ""); + editorHashMap.put("type", "EnumField"); + editorHashMap.put("titleSourceType", "static"); + editorHashMap.put("title", "下拉框"); + editorHashMap.put("controlSource", "Farris"); + editorHashMap.put("placeHolder", ""); + editorHashMap.put("readonly", false); + editorHashMap.put("require", false); + editorHashMap.put("disable", false); + editorHashMap.put("holdPlace", false); + editorHashMap.put("isTextArea", true); + editorHashMap.put("linkedLabelEnabled", false); + editorHashMap.put("visible", true); + editorHashMap.put("hasDefaultFocus", false); + editorHashMap.put("idField", ""); + editorHashMap.put("textField", ""); + editorHashMap.put("multiSelect", false); + editorHashMap.put("uri", ""); + editorHashMap.put("autoWidth", true); + editorHashMap.put("enableClear", true); + editorHashMap.put("enableCancelSelected", false); + editorHashMap.put("dataSourceType", "static"); + break; + case "RadioGroup": + editorHashMap.put("id", "radioGroup1"); + editorHashMap.put("type", "RadioGroup"); + editorHashMap.put("titleSourceType", "static"); + editorHashMap.put("title", "单选组"); + editorHashMap.put("isHorizontal", true); + editorHashMap.put("readonly", false); + editorHashMap.put("require", false); + editorHashMap.put("disable", false); + editorHashMap.put("linkedLabelEnabled", false); + editorHashMap.put("visible", true); + editorHashMap.put("holdPlace", false); + editorHashMap.put("dataSourceType", "static"); + editorHashMap.put("textField", "name"); + editorHashMap.put("valueField", "value"); + + break; + case "Tab": + editorHashMap.put("id", "tab1"); + editorHashMap.put("type", "Tab"); + editorHashMap.put("controlSource", "Farris"); + editorHashMap.put("position", "top"); + editorHashMap.put("contentFill", false); + editorHashMap.put("autoTitleWidth", false); + editorHashMap.put("titleWidth", 0); + break; + case "TabPage": + editorHashMap.put("id", "tabPage1"); + editorHashMap.put("type", "TabPage"); + editorHashMap.put("controlSource", "Farris"); + editorHashMap.put("title", "标签页"); + editorHashMap.put("removeable", false); + editorHashMap.put("toolbar", ""); + editorHashMap.put("visible", true); + break; + case "TabToolbarItem": + editorHashMap.put("id", "tabToolbarItem"); + editorHashMap.put("type", "TabToolbarItem"); + editorHashMap.put("title", "工具栏按钮"); + editorHashMap.put("disable", false); + editorHashMap.put("visible", true); + break; + case "Section": + editorHashMap.put("id", "section1"); + editorHashMap.put("type", "Section"); + editorHashMap.put("visible", true); + editorHashMap.put("mainTitle", ""); + editorHashMap.put("subTitle", ""); + editorHashMap.put("headerClass", ""); + editorHashMap.put("titleClass", ""); + editorHashMap.put("extendedHeaderAreaClass", ""); + editorHashMap.put("toolbarClass", ""); + editorHashMap.put("extendedAreaClass", ""); + editorHashMap.put("contentTemplateClass", ""); + editorHashMap.put("fill", false); + editorHashMap.put("expanded", true); + editorHashMap.put("accordionMode", "default"); + editorHashMap.put("showHeader", false); + editorHashMap.put("headerTemplate", ""); + editorHashMap.put("titleTemplate", ""); + editorHashMap.put("extendedHeaderAreaTemplate", ""); + editorHashMap.put("toolbarTemplate", ""); + editorHashMap.put("extendedAreaTemplate", ""); + editorHashMap.put("isScrollSpyItem", false); + + break; + case "ToolBarItem": + editorHashMap.put("id", ""); + editorHashMap.put("type", "ToolBarItem"); + editorHashMap.put("disable", false); + editorHashMap.put("visible", true); + editorHashMap.put("text", ""); + break; + case "LanguageTextBox": + editorHashMap.put("id", "languageTextBox1"); + editorHashMap.put("type", "LanguageTextBox"); + editorHashMap.put("titleSourceType", "static"); + editorHashMap.put("title", "多语控件"); + editorHashMap.put("readonly", false); + editorHashMap.put("require", false); + editorHashMap.put("disable", false); + editorHashMap.put("enableClear", true); + editorHashMap.put("placeHolder", ""); + editorHashMap.put("holdPlace", false); + editorHashMap.put("linkedLabelEnabled", false); + editorHashMap.put("visible", true); + editorHashMap.put("path", ""); + editorHashMap.put("isTextArea", true); + editorHashMap.put("hasDefaultFocus", false); + editorHashMap.put("useFrameworkLanguage", true); + editorHashMap.put("editable", false); + editorHashMap.put("enableAppend", false); + editorHashMap.put("inputAppendType", "button"); + editorHashMap.put("inputAppendDisabled", false); + + break; + default: + throw new RuntimeException("未知的控件类型"); + } + return editorHashMap; + } +} diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategy.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategy.java index 661e8c6b..e0064e45 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategy.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategy.java @@ -24,6 +24,7 @@ import com.inspur.edp.web.formmetadata.i18n.component.ComponentUtility; import com.inspur.edp.web.formmetadata.i18n.constant.I18nResourceConstant; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.regex.Matcher; @@ -37,6 +38,8 @@ import java.util.regex.Pattern; public class HtmlTemplateI18nResourceStrategy extends AbstractI18nResourceStrategy { private Pattern extractPattern = null; private Pattern specificPattern = null; + private char danYinHao = '\''; + private char shuangYinHao = '\"'; public HtmlTemplateI18nResourceStrategy() { // 用于匹配{{}}结构的字符 @@ -93,14 +96,11 @@ public class HtmlTemplateI18nResourceStrategy extends AbstractI18nResourceStrate // 构造对应的国际化key String componentIdStr = i18nResourceExpress.substring(0, expressDelimiterIndex).trim(); - String[] componentIdStrArray = componentIdStr.split(java.util.regex.Pattern.quote("'"), -1); - if (componentIdStrArray.length == 3) { - String generatedComponentId = componentIdStrArray[1]; - I18nResourceItem i18nResourceItem = I18nResourceItemManager.createI18nResourceItem(i18nResourceItemBaseId, generatedComponentId, componentDefaultLangValue, componentDefaultLangValue); + String trimedComponentIdStr = StringUtility.trimStringWith(componentIdStr, Arrays.asList(danYinHao, shuangYinHao)); - i18nResourceItemCollection.add(i18nResourceItem); - // 添加到资源项集合 - } + I18nResourceItem i18nResourceItem = I18nResourceItemManager.createI18nResourceItem(i18nResourceItemBaseId, trimedComponentIdStr, componentDefaultLangValue, componentDefaultLangValue); + + i18nResourceItemCollection.add(i18nResourceItem); } } @@ -132,7 +132,6 @@ public class HtmlTemplateI18nResourceStrategy extends AbstractI18nResourceStrate String generatedComponentId = currentComponentType + I18nResourceConstant.SECOND_LEVEL_DELIMITER + currentComponentId + I18nResourceConstant.SECOND_LEVEL_DELIMITER + firstTitle; - // 确保添加到资源项的key 不进行重复 if (!resourceIdList.contains(generatedComponentId)) { while (secondValue.startsWith("\"") || secondValue.startsWith("'")) { @@ -169,10 +168,7 @@ public class HtmlTemplateI18nResourceStrategy extends AbstractI18nResourceStrate if (splitArray != null && splitArray.length == 3) { // 认定第三个参数为国际化默认值 String langDefaultValue = splitArray[splitArray.length - 1]; - String[] splitDefaultValue = langDefaultValue.split(java.util.regex.Pattern.quote("'"), -1); - if (splitDefaultValue != null && splitDefaultValue.length == 3) { - return splitDefaultValue[1]; - } + return StringUtility.trimStringWith(langDefaultValue, Arrays.asList(danYinHao, shuangYinHao)); } return null; diff --git a/web-pageflow-metadata/src/test/java/com/inspur/edp/web/pageflow/metadata/entity/PageFlowMetadataEntityTest.java b/web-pageflow-metadata/src/test/java/com/inspur/edp/web/pageflow/metadata/entity/PageFlowMetadataEntityTest.java new file mode 100644 index 00000000..cffe9543 --- /dev/null +++ b/web-pageflow-metadata/src/test/java/com/inspur/edp/web/pageflow/metadata/entity/PageFlowMetadataEntityTest.java @@ -0,0 +1,33 @@ +/* + * 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.pageflow.metadata.entity; + +import com.inspur.edp.web.common.utility.RandomUtility; +import org.junit.Test; + +import java.util.Random; + +import static org.junit.Assert.*; + +public class PageFlowMetadataEntityTest { + + @Test + public void uuid() { + System.out.println(RandomUtility.newGuid()); + } + +} \ No newline at end of file -- Gitee From 509a050297c247527ebb2d7f4d8ba810c33f40df Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Wed, 5 Apr 2023 14:11:11 +0800 Subject: [PATCH 22/31] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=B5=8B=E8=AF=95api?= =?UTF-8?q?=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scriptcache/api/webservice/ScriptCacheWebService.java | 3 --- .../scriptcache/webservice/ScriptCacheWebServiceImpl.java | 5 ----- 2 files changed, 8 deletions(-) diff --git a/runtime-scriptcache-api/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/api/webservice/ScriptCacheWebService.java b/runtime-scriptcache-api/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/api/webservice/ScriptCacheWebService.java index 4e498c55..cf35bdee 100644 --- a/runtime-scriptcache-api/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/api/webservice/ScriptCacheWebService.java +++ b/runtime-scriptcache-api/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/api/webservice/ScriptCacheWebService.java @@ -44,7 +44,4 @@ public interface ScriptCacheWebService { @Path("/checkversion") ScriptCacheResponse checkVersion(@RequestBody ScriptCacheCheckVersionRequest request); - @GET - @Path("/resttest") - ScriptCacheResponse resttest(); } diff --git a/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/webservice/ScriptCacheWebServiceImpl.java b/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/webservice/ScriptCacheWebServiceImpl.java index 5141c991..19ab8ed9 100644 --- a/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/webservice/ScriptCacheWebServiceImpl.java +++ b/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/webservice/ScriptCacheWebServiceImpl.java @@ -88,9 +88,4 @@ public class ScriptCacheWebServiceImpl implements ScriptCacheWebService { return scriptCacheResponse; } - @Override - public ScriptCacheResponse resttest() { - return null; - } - } -- Gitee From eff6abe05365009e5edc0756dad82be4be8d0f3f Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Wed, 5 Apr 2023 16:55:11 +0800 Subject: [PATCH 23/31] =?UTF-8?q?npm=E5=9C=A8=E7=BA=BF=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E5=9C=A8jit=E6=9C=AA=E5=AE=89=E8=A3=85=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E4=B8=BB=E5=8A=A8=E6=89=A7=E8=A1=8C=E5=AE=89=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/NpmInstallGlobalManager.java | 42 ++++++++++++++----- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/global/NpmInstallGlobalManager.java b/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/global/NpmInstallGlobalManager.java index 280a68e7..85ae4154 100644 --- a/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/global/NpmInstallGlobalManager.java +++ b/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/global/NpmInstallGlobalManager.java @@ -17,6 +17,8 @@ package com.inspur.edp.web.npmpackage.core.npminstall.global; import com.inspur.edp.web.common.environment.ExecuteEnvironment; +import com.inspur.edp.web.common.environment.checker.ExecuteEnvironmentCheckResult; +import com.inspur.edp.web.common.environment.checker.ExecuteEnvironmentChecker; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.utility.CommonUtility; @@ -65,7 +67,7 @@ public class NpmInstallGlobalManager { */ public static NpmPackageResponse npmInstall(NpmInstallParameter npmInstallParameter) { String currentClassName = NpmInstallGlobalManager.class.getName(); - + if (npmInstallParameter.isOfflineMode()) { String errorMessage = "开启离线模式,自动更新离线包停止"; WebLogger.Instance.info(errorMessage, currentClassName); @@ -82,6 +84,7 @@ public class NpmInstallGlobalManager { return NpmPackageResponse.create(); } + boolean isUpgradeTool = npmInstallParameter.getExecuteEnvironment().equals(ExecuteEnvironment.UpgradeTool); String tmpPackageJsonPath = GlobalPackageJsonPathGenerator.getPackageJsonPathInTmpDir(); String serverPackageJsonPath = GlobalPackageJsonPathGenerator.generate(); @@ -131,21 +134,28 @@ public class NpmInstallGlobalManager { // 如果不是直接拷贝 那么比较两个文件目录是否相同 // 比较package.json String serverPackageJsonContent = FileUtility.readAsString(serverPackageJsonPath); - - NpmPackageJsonInfo serverPackageJsonInfo = NpmPackageCheck.packageJsonInfoGenerate(serverPackageJsonContent); NpmPackageJsonInfo tmpPackageJsonInfo = null; - if (!isSameCopiledFile) { - String tmpPackageJsonContent = FileUtility.readAsString(tmpPackageJsonFilePath); - tmpPackageJsonInfo = NpmPackageCheck.packageJsonInfoGenerate(tmpPackageJsonContent); - } + boolean mustInstallGlobalCommand = checkNeedInstallGlobalCommand(); + // 如果是命令未安装 或者是对应的版本信息不匹配 + if (mustInstallGlobalCommand) { + // 使用配置的参数进行强制安装 + needInstall = true; + isSameCopiledFile = true; + } else { + if (!isSameCopiledFile) { + String tmpPackageJsonContent = FileUtility.readAsString(tmpPackageJsonFilePath); + tmpPackageJsonInfo = NpmPackageCheck.packageJsonInfoGenerate(tmpPackageJsonContent); + } - if (!needInstall) { - // 取反 - needInstall = !serverPackageJsonInfo.equals(tmpPackageJsonInfo); + if (!needInstall) { + // 取反 + needInstall = !serverPackageJsonInfo.equals(tmpPackageJsonInfo); + } } + // 逐个执行安装 try { if (needInstall && serverPackageJsonInfo != null) { @@ -200,4 +210,16 @@ public class NpmInstallGlobalManager { } return NpmPackageResponse.create(); } + + /** + * 如果检测到未安装jit或ng命令 那么需要执行对应的在线安装 + * + * @return + */ + private static boolean checkNeedInstallGlobalCommand() { + // 检测全局命令jit和ng是否正确安装 如果未正确安装 那么在开启在线更新模式下自动安装 + ExecuteEnvironmentCheckResult jitCheckResult = ExecuteEnvironmentChecker.checkGlobalJitEngineInstalled(); + ExecuteEnvironmentCheckResult ngCheckResult = ExecuteEnvironmentChecker.checkGlobalNgInstalled(); + return !jitCheckResult.isSuccess() || !ngCheckResult.isSuccess(); + } } -- Gitee From eb6c5e4fbe675380a09b5668f34b437c105a9a06 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Thu, 6 Apr 2023 10:46:28 +0800 Subject: [PATCH 24/31] =?UTF-8?q?=E5=B8=AE=E5=8A=A9=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E6=9E=84=E9=80=A0=E5=8F=82=E6=95=B0=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/formmetadata/event/FormMetadataSaveEventListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 2f64bfde..ac89e4d5 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 @@ -243,7 +243,7 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { */ private void deleteRelateHelpMetadata() { String fileName = this.metadataEventArgs.getMetadata().getHeader().getFileName(); - String name = this.metadataEventArgs.getMetadata().getHeader().getName(); + String name = this.metadataEventArgs.getMetadata().getHeader().getCode(); String relativePath = this.metadataEventArgs.getMetadata().getRelativePath(); String projectRelativePath = MetadataUtility.getInstance().getMetadataProjectPath(relativePath); -- Gitee From 00c72c3170445e3a1b21fbaa24739eff8465a332 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Fri, 7 Apr 2023 11:30:17 +0800 Subject: [PATCH 25/31] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=BC=95=E7=94=A8=EF=BC=8C=E6=96=B9=E4=BE=BF=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HtmlTemplateI18nResourceStrategy.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategy.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategy.java index e0064e45..56992bd4 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategy.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/i18n/component/strategy/i18nresourcestrategy/HtmlTemplateI18nResourceStrategy.java @@ -96,7 +96,7 @@ public class HtmlTemplateI18nResourceStrategy extends AbstractI18nResourceStrate // 构造对应的国际化key String componentIdStr = i18nResourceExpress.substring(0, expressDelimiterIndex).trim(); - String trimedComponentIdStr = StringUtility.trimStringWith(componentIdStr, Arrays.asList(danYinHao, shuangYinHao)); + String trimedComponentIdStr = this.trimStringWith(componentIdStr, Arrays.asList(danYinHao, shuangYinHao)); I18nResourceItem i18nResourceItem = I18nResourceItemManager.createI18nResourceItem(i18nResourceItemBaseId, trimedComponentIdStr, componentDefaultLangValue, componentDefaultLangValue); @@ -168,9 +168,30 @@ public class HtmlTemplateI18nResourceStrategy extends AbstractI18nResourceStrate if (splitArray != null && splitArray.length == 3) { // 认定第三个参数为国际化默认值 String langDefaultValue = splitArray[splitArray.length - 1]; - return StringUtility.trimStringWith(langDefaultValue, Arrays.asList(danYinHao, shuangYinHao)); + return this.trimStringWith(langDefaultValue, Arrays.asList(danYinHao, shuangYinHao)); } return null; } + + /** + * 移除字符串两端指定的字符 + * + * @param source + * @param beTrim + * @return + */ + public String trimStringWith(String source, List beTrim) { + int st = 0; + int len = source.length(); + char[] val = source.toCharArray(); + + while ((st < len) && (beTrim.contains(val[st]))) { + st++; + } + while ((st < len) && (beTrim.contains(val[len - 1]))) { + len--; + } + return ((st > 0) || (len < source.length())) ? source.substring(st, len) : source; + } } -- Gitee From 44658800bc1693a69e8ada5d7c0c054480d99a38 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Mon, 10 Apr 2023 19:09:17 +0800 Subject: [PATCH 26/31] =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E6=94=B9?= =?UTF-8?q?=E9=80=A0=E5=BC=82=E5=B8=B8=E6=95=B4=E4=BD=93=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LocalServerVersionManager.java | 6 +- toout.bat | 4 +- .../core/service/GspAppConfigService.java | 7 +- .../inspur/edp/web/common/GSPException.java | 3 + .../customexception/WebCustomException.java | 28 +- .../environment/ExecuteEnvironment.java | 12 +- ...tReferenceWebComponentMetadataInvoker.java | 25 ++ .../GspProjectUtility.java} | 47 ++- .../metadata/MetadataGetterParameter.java | 4 + .../metadata/MetadataProjectUtility.java | 50 +++ .../web/common/metadata/MetadataUtility.java | 337 +++++------------- .../metadata/MetadataUtilityWithDesign.java | 168 +++++++++ .../metadata/MetadataUtilityWithRuntime.java | 48 +++ .../MetadataUtilityWithRuntimeRpc.java | 56 +++ .../designschema/generator/EntityBuilder.java | 4 +- .../designschema/generator/FieldBuilder.java | 4 +- .../generator/FieldTypeBuilder.java | 2 +- .../synchronization/FormMetadataUpdate.java | 4 +- .../DynamicCreateFormMetadataServiceImpl.java | 10 +- .../StateMachineMetadataGenerator.java | 2 +- .../webservice/DynamicFormWebServiceImpl.java | 3 - .../edp/web/jitengine/JITEngineManager.java | 16 +- .../babelgrnerate/GenerateForBabel.java | 8 +- .../metadatamanager/BaseMetaDataManager.java | 2 +- .../event/FormMetadataSaveEventListener.java | 28 +- .../event/WebCommandMetadataDelete.java | 9 +- .../i18n/component/ComponentUtility.java | 5 +- .../replication/FormMetadataCmdManager.java | 18 +- .../replication/FormMetadataReplicator.java | 18 +- .../replication/FormMetadataSmManager.java | 6 +- .../replication/FormMetadataVoManager.java | 6 +- .../MetaDataReplicateBeforeValidator.java | 2 +- .../replication/MetadataCloneManager.java | 4 +- .../MetadataReplicationContextService.java | 4 +- .../ProjectInformationManager.java | 4 +- .../service/FormMetadataRTService.java | 4 +- .../service/FormMetataService.java | 22 +- .../FrontendProjectCompiler.java | 4 +- .../FrontendProjectDeployer.java | 14 +- .../FrontendProjectExtractor.java | 4 +- .../FrontendProjectService.java | 8 +- .../FrontendProjectUtility.java | 5 +- .../build/FrontendProjectBuild.java | 5 +- .../MetadataChangeStepExecuteImpl.java | 3 +- .../SourceServicePathGenerator.java | 9 +- .../AbstractFormMetadataDebugUri.java | 3 +- .../FormMetadataDebugUriWithMobile.java | 16 +- .../debuguri/FormMetadataDebugUriWithPC.java | 6 +- .../deploy/FrontendProjectDeploy.java | 15 +- .../FormDynamicParameterValidator.java | 8 +- .../generate/FrontendProjectGenerate.java | 18 +- .../pageflow/PageFlowMetadataManager.java | 12 +- .../FrontendProjectWebServiceImpl.java | 8 +- .../npminstall/NodeModulesPathGenerator.java | 4 - .../PageFlowMetadataUpdateService.java | 17 +- .../metadata/service/RouteMetataService.java | 10 +- .../SourceCodeMetadataEventListener.java | 8 +- 57 files changed, 688 insertions(+), 469 deletions(-) create mode 100644 web-common/src/main/java/com/inspur/edp/web/common/metadata/AfterGetReferenceWebComponentMetadataInvoker.java rename web-common/src/main/java/com/inspur/edp/web/common/{GspProjectUtil.java => metadata/GspProjectUtility.java} (52%) create mode 100644 web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataProjectUtility.java create mode 100644 web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithDesign.java create mode 100644 web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithRuntime.java create mode 100644 web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithRuntimeRpc.java diff --git a/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/localserver/LocalServerVersionManager.java b/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/localserver/LocalServerVersionManager.java index 9c21b885..ac22bab7 100644 --- a/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/localserver/LocalServerVersionManager.java +++ b/runtime-scriptcache/src/main/java/com/inspur/edp/web/jitruntimebuild/scriptcache/localserver/LocalServerVersionManager.java @@ -242,20 +242,20 @@ public class LocalServerVersionManager { } private void clearDBOAndBECache(String metaDataId) { - GspMetadata formMetadata = MetadataUtility.getInstance().getCustomizationService().getMetadata(metaDataId); + GspMetadata formMetadata = MetadataUtility.getInstance().getMetadataWithRuntime(metaDataId); if (formMetadata != null) { FormMetadataContent formMetadataContent = (FormMetadataContent) formMetadata.getContent(); JsonNode content = formMetadataContent.getContents(); String voId = content.at("/module/schemas/0/id").textValue(); if (!StringUtility.isNullOrEmpty(voId)) { - GspMetadata vo = MetadataUtility.getInstance().getCustomizationService().getMetadata(voId); + GspMetadata vo = MetadataUtility.getInstance().getMetadataWithRuntime(voId); //vo缓存清理 BffEngineCacheService.remove(voId); WebLogger.Instance.info("清理VO元数据,元数据id为:" + voId, CurrentClassName); if (vo != null) { String beId = ((GspViewModel) vo.getContent()).getMapping().getTargetMetadataId(); if (!StringUtility.isNullOrEmpty(beId)) { - GspMetadata beMetadata = MetadataUtility.getInstance().getCustomizationService().getMetadata(beId); + GspMetadata beMetadata = MetadataUtility.getInstance().getMetadataWithRuntime(beId); // 如果获取到BE元数据 if (beMetadata != null) { IDatabaseObjectRtService databaseObjectRtService = SpringBeanUtils.getBean(IDatabaseObjectRtService.class); diff --git a/toout.bat b/toout.bat index fc3fac75..ed885d65 100644 --- a/toout.bat +++ b/toout.bat @@ -38,8 +38,8 @@ COPY .\web-frontendproject-api\target\web-jitengine-frontendproject-api-%version COPY .\web-designschema\target\web-designschema-%version%.jar .\out\server\platform\common\libs\web-designschema.jar COPY .\web-designschema-api\target\web-designschema-api-%version%.jar .\out\server\platform\common\libs\web-designschema-api.jar -COPY .\web-dynamic-form-api\target\web-dynamicform-api-%version%.jar .\out\server\platform\common\libs\web-dynamicform-api.jar -COPY .\web-dynamic-form-core\target\web-dynamicform-core-%version%.jar .\out\server\platform\common\libs\web-dynamicform-core.jar +#COPY .\web-dynamic-form-api\target\web-dynamicform-api-%version%.jar .\out\server\platform\common\libs\web-dynamicform-api.jar +#COPY .\web-dynamic-form-core\target\web-dynamicform-core-%version%.jar .\out\server\platform\common\libs\web-dynamicform-core.jar COPY .\web-pageflow-metadata\target\web-pageflow-metadata-%version%.jar .\out\server\platform\common\libs\web-pageflow-metadata.jar COPY .\web-statemachine\target\web-statemachine-metadata-%version%.jar .\out\server\platform\common\libs\web-statemachine-metadata.jar diff --git a/web-appconfig-core/src/main/java/com/inspur/edp/web/appconfig/core/service/GspAppConfigService.java b/web-appconfig-core/src/main/java/com/inspur/edp/web/appconfig/core/service/GspAppConfigService.java index e8623729..1dd4cdd9 100644 --- a/web-appconfig-core/src/main/java/com/inspur/edp/web/appconfig/core/service/GspAppConfigService.java +++ b/web-appconfig-core/src/main/java/com/inspur/edp/web/appconfig/core/service/GspAppConfigService.java @@ -21,9 +21,9 @@ 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.GspProjectUtil; import com.inspur.edp.web.common.entity.TerminalType; import com.inspur.edp.web.common.io.FileUtility; +import com.inspur.edp.web.common.metadata.GspProjectUtility; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.common.utility.StringUtility; @@ -47,6 +47,7 @@ public class GspAppConfigService { /** * 基于相对路径(不包含开发路径),获取app.config文件内容 + * * @param relativeProjectPath * @return */ @@ -72,6 +73,7 @@ public class GspAppConfigService { } return gspAppConfig; } + /** * 创建app.config.json 空文件 * 如果app.config.json 文件不存在 那么创建对应的文件 @@ -84,6 +86,7 @@ public class GspAppConfigService { /** * 获取开发元数据绝对路径 将当前路径和devRootPath合并 + * * @param path * @return */ @@ -156,7 +159,7 @@ public class GspAppConfigService { if (appConfigEntity == null) { return; } - String projectName = GspProjectUtil.getProjectName(projectPath); + String projectName = GspProjectUtility.getProjectName(projectPath); // 如果pc页面流路径不为空 if (!StringUtility.isNullOrEmpty(appConfigEntity.getPageFlowMetadataPath())) { String relativePageFlowMetadataPath = getRelativePageflowMetadataPath(appConfigEntity.getPageFlowMetadataPath(), projectName); diff --git a/web-common/src/main/java/com/inspur/edp/web/common/GSPException.java b/web-common/src/main/java/com/inspur/edp/web/common/GSPException.java index beb135ee..2840a544 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/GSPException.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/GSPException.java @@ -21,9 +21,12 @@ import io.iec.edp.caf.commons.exception.ExceptionLevel; /** * web自定义异常类 + * * @author noah */ +@Deprecated public class GSPException extends CAFRuntimeException { + public GSPException(String exceptionCode, String exceptionMessage){ super("", exceptionCode, exceptionMessage, null); } diff --git a/web-common/src/main/java/com/inspur/edp/web/common/customexception/WebCustomException.java b/web-common/src/main/java/com/inspur/edp/web/common/customexception/WebCustomException.java index 1205cd60..2af9edc6 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/customexception/WebCustomException.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/customexception/WebCustomException.java @@ -26,8 +26,27 @@ import io.iec.edp.caf.commons.exception.ExceptionLevel; */ public class WebCustomException extends CAFRuntimeException { - public WebCustomException(String message, ExceptionLevel level, boolean bizException) { - super("", "", message, null, level, bizException); + /** + * 自定义异常定义 设置默认的日志级别为:Error + * + * @param message + */ + public WebCustomException(String message) { + this(message, ExceptionLevel.Error); + } + + /** + * 自定义异常定义 包含message和内部异常 + * + * @param message + * @param innerException + */ + public WebCustomException(String message, Exception innerException) { + this("", "", message, innerException, ExceptionLevel.Error, true); + } + + public WebCustomException(String message, Exception innerException, ExceptionLevel exceptionLevel) { + this("", "", message, innerException, exceptionLevel, true); } /** @@ -40,6 +59,11 @@ public class WebCustomException extends CAFRuntimeException { this(message, level, true); } + public WebCustomException(String message, ExceptionLevel level, boolean bizException) { + super("", "", message, null, level, bizException); + } + + public WebCustomException(String serviceUnitCode, String exceptionCode, String message, Exception innerException, ExceptionLevel level, boolean bizException) { super(serviceUnitCode, exceptionCode, message, innerException, level, bizException); } diff --git a/web-common/src/main/java/com/inspur/edp/web/common/environment/ExecuteEnvironment.java b/web-common/src/main/java/com/inspur/edp/web/common/environment/ExecuteEnvironment.java index c8cced94..d18f205c 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/environment/ExecuteEnvironment.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/environment/ExecuteEnvironment.java @@ -22,6 +22,9 @@ package com.inspur.edp.web.common.environment; * @author guozhiqi */ public enum ExecuteEnvironment { + /** + * 枚举名称Design + */ Design { @Override public String getName() { @@ -29,6 +32,9 @@ public enum ExecuteEnvironment { } }, + /** + * 枚举名称Runtime + */ Runtime { @Override public String getName() { @@ -36,12 +42,16 @@ public enum ExecuteEnvironment { } }, + /** + * 枚举名称 + */ UpgradeTool { @Override public String getName() { return "UpgradeTool"; } - }, None { + }, + None { /** * 未指定具体运行位置 * @return diff --git a/web-common/src/main/java/com/inspur/edp/web/common/metadata/AfterGetReferenceWebComponentMetadataInvoker.java b/web-common/src/main/java/com/inspur/edp/web/common/metadata/AfterGetReferenceWebComponentMetadataInvoker.java new file mode 100644 index 00000000..b86c2266 --- /dev/null +++ b/web-common/src/main/java/com/inspur/edp/web/common/metadata/AfterGetReferenceWebComponentMetadataInvoker.java @@ -0,0 +1,25 @@ +/* + * 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.common.metadata; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.web.command.component.metadata.CmpMethodRefering; + +@FunctionalInterface +public interface AfterGetReferenceWebComponentMetadataInvoker { + void invoke(GspMetadata commandMetadata, CmpMethodRefering methodReferingItem, GspMetadata webComponentMetadata, Object... outParameterArray); +} diff --git a/web-common/src/main/java/com/inspur/edp/web/common/GspProjectUtil.java b/web-common/src/main/java/com/inspur/edp/web/common/metadata/GspProjectUtility.java similarity index 52% rename from web-common/src/main/java/com/inspur/edp/web/common/GspProjectUtil.java rename to web-common/src/main/java/com/inspur/edp/web/common/metadata/GspProjectUtility.java index 68bb14e6..3c339e12 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/GspProjectUtil.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/metadata/GspProjectUtility.java @@ -14,31 +14,37 @@ * limitations under the License. */ -package com.inspur.edp.web.common; +package com.inspur.edp.web.common.metadata; import com.inspur.edp.lcm.metadata.api.entity.GspProject; import com.inspur.edp.lcm.metadata.api.service.GspProjectService; +import com.inspur.edp.web.common.customexception.WebCustomException; +import com.inspur.edp.web.common.logger.WebLogger; +import io.iec.edp.caf.commons.exception.ExceptionLevel; import io.iec.edp.caf.commons.utils.SpringBeanUtils; /** + * GspProject 工程信息Utility + * * @author guozhiqi */ -public class GspProjectUtil { +public class GspProjectUtility { /** - * 依据工程路径获取对应的工程信息 + * 获取工程信息 * * @param projectPath * @return */ - public static GspProject getGspProject(String projectPath) { + public static GspProject getProjectInformation(String projectPath) { try { - GspProjectService gspProjectService = SpringBeanUtils.getBean(GspProjectService.class); - return gspProjectService.getGspProjectInfo(projectPath); - } catch (Exception e) { - throw new RuntimeException(e.getMessage(), e); + return GspProjectServiceInstance.get().getGspProjectInfo(projectPath); + } catch (Exception ex) { + WebLogger.Instance.error(ex, GspProjectUtility.class.getName()); + throw new WebCustomException("获取工程信息出现错误," + ex.getMessage(), ExceptionLevel.Error); } } + /** * 根据工程路径获取工程名称 获取的是其对应的小写形式 * @@ -46,16 +52,39 @@ public class GspProjectUtil { * @return 工程名称 */ public static String getProjectName(String projectPath) { - GspProject currentProject = getGspProject(projectPath); + GspProject currentProject = getProjectInformation(projectPath); return getProjectName(currentProject); } /** * 获取工程名称的小写形式 + * * @param gspProject * @return */ public static String getProjectName(GspProject gspProject) { return gspProject.getMetadataProjectName().toLowerCase(); } + + /** + * 从工程路径中获取su路径,统一使用小写 + * + * @param projectPath + * @return + */ + public String getServiceUnitPath(String projectPath) { + GspProject currentProject = getProjectInformation(projectPath); + return currentProject.getSuDeploymentPath().toLowerCase(); + } + + /** + * GspProjectService + */ + private static class GspProjectServiceInstance { + public static GspProjectService get() { + return SpringBeanUtils.getBean(GspProjectService.class); + } + } + + } diff --git a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataGetterParameter.java b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataGetterParameter.java index fe189ed5..45f51660 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataGetterParameter.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataGetterParameter.java @@ -21,6 +21,10 @@ import lombok.Data; import lombok.Getter; import lombok.Setter; +/** + * 元数据获取请求参数 + * @author noah + */ public class MetadataGetterParameter { private MetadataGetterParameter(String targetMetadataId, String spacePath) { this.targetMetadataId = targetMetadataId; diff --git a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataProjectUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataProjectUtility.java new file mode 100644 index 00000000..df2afd41 --- /dev/null +++ b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataProjectUtility.java @@ -0,0 +1,50 @@ +/* + * 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.common.metadata; + +import com.inspur.edp.lcm.metadata.api.entity.MetadataProject; +import com.inspur.edp.lcm.metadata.api.service.MetadataProjectService; +import com.inspur.edp.web.common.utility.StringUtility; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +/** + * 元数据工程信息utility + * + * @author guozhiqi + */ +public class MetadataProjectUtility { + /** + * 根据元数据相对路径获取工程信息 + * + * @param metadataRelativePath + * @return + */ + public static MetadataProject getMetadataProject(String metadataRelativePath) { + if (StringUtility.isNullOrEmpty(metadataRelativePath)) { + return null; + } + + return MetadataProjectServiceInstance.get().getMetadataProjInfo(metadataRelativePath); + } + + private static class MetadataProjectServiceInstance { + public static MetadataProjectService get() { + return SpringBeanUtils.getBean(MetadataProjectService.class); + } + } + +} 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 c86a40bb..298e2bfb 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 @@ -19,29 +19,15 @@ package com.inspur.edp.web.common.metadata; 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.GspProject; -import com.inspur.edp.lcm.metadata.api.entity.MetadataHeader; import com.inspur.edp.lcm.metadata.api.entity.MetadataProject; import com.inspur.edp.lcm.metadata.api.entity.uri.MetadataURI; -import com.inspur.edp.lcm.metadata.api.service.GspProjectService; -import com.inspur.edp.lcm.metadata.api.service.MetadataProjectService; -import com.inspur.edp.lcm.metadata.api.service.MetadataService; -import com.inspur.edp.lcm.metadata.api.service.RefCommonService; import com.inspur.edp.lcm.metadata.devcommon.ManagerUtils; -import com.inspur.edp.metadata.rtcustomization.api.CustomizationService; -import com.inspur.edp.metadata.rtcustomization.serverapi.CustomizationServerService; import com.inspur.edp.web.command.component.metadata.*; -import com.inspur.edp.web.common.GSPException; +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.logger.WebLogger; import com.inspur.edp.web.common.utility.StringUtility; -import io.iec.edp.caf.commons.utils.SpringBeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import java.io.IOException; -import java.nio.file.Paths; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -52,106 +38,86 @@ import java.util.List; */ public final class MetadataUtility { - @Autowired - private MetadataService metadataService; - - @Autowired - private RefCommonService refCommonService; - - @Autowired - private MetadataProjectService metadataProjectService; - - @Autowired - private GspProjectService gspProjectService; - - @Autowired - private CustomizationService customizationService; - - @Autowired - private CustomizationServerService customizationServerService; + private MetadataUtility() { - public MetadataService getMetadataService() { - if (metadataService == null) { - metadataService = SpringBeanUtils.getBean(MetadataService.class); - } - return metadataService; } - public RefCommonService getRefCommonService() { - if (refCommonService == null) { - refCommonService = SpringBeanUtils.getBean(RefCommonService.class); - } - return refCommonService; + /** + * 不再保持单例 使用spring自带的缓存bean进行读取 + * + * @return + */ + public static MetadataUtility getInstance() { + return new MetadataUtility(); } - public MetadataProjectService getMetadataProjectService() { - if (metadataProjectService == null) { - metadataProjectService = SpringBeanUtils.getBean(MetadataProjectService.class); - } - return metadataProjectService; + /** + * 根据元数据名称及元数据所在路径获取元数据信息。该方法不支持跨工程引用 + * + * @param metadataFileName + * @param metadataPath + * @return + */ + public GspMetadata getMetadataWithDesign(String metadataFileName, String metadataPath) { + return MetadataUtilityWithDesign.getMetadata(metadataFileName, metadataPath); } - public GspProjectService getGspProjectService() { - if (gspProjectService == null) { - gspProjectService = SpringBeanUtils.getBean(GspProjectService.class); - } - return gspProjectService; + /** + * @param metadataGetterParameter + * @return + */ + public GspMetadata getMetadataWithDesign(MetadataGetterParameter metadataGetterParameter) { + return MetadataUtilityWithDesign.getMetadata(metadataGetterParameter); } - public CustomizationService getCustomizationService() { - if (customizationService == null) { - customizationService = SpringBeanUtils.getBean(CustomizationService.class); - } - return customizationService; + /** + * 获取指定类型的元数据 + * + * @param projectPath + * @param metadataType + * @return + */ + public List getMetadataListInProjectWithDesign(String projectPath, String metadataType) { + return MetadataUtilityWithDesign.getMetadataListInProject(projectPath, metadataType); } - public CustomizationServerService getCustomizationServerService() { - if (customizationServerService == null) { - customizationServerService = SpringBeanUtils.getBean(CustomizationServerService.class); - } - return customizationServerService; + /** + * 删除对应的元数据物理文件 + * + * @param metadataPath 元数据所属路径 + * @param metadataFileName 元数据对应的文件名称 + */ + public void deleteMetadataWithDesign(String metadataPath, String metadataFileName) { + MetadataUtilityWithDesign.deleteMetadata(metadataPath, metadataFileName); } - - private MetadataUtility() { - + /** + * 元数据保存 如果元数据已经存在,则先进行删除旧的元数据文件 + * + * @param metadata + */ + public void saveMetadataWithDesign(GspMetadata metadata) { + MetadataUtilityWithDesign.saveMetadata(metadata); } - private static final Object _lock = new Object(); - private static volatile MetadataUtility metadataUtilityInstance = null; - - public static MetadataUtility getInstance() { - if (metadataUtilityInstance == null) { - synchronized (_lock) { - if (metadataUtilityInstance == null) { - metadataUtilityInstance = new MetadataUtility(); - } - } - } - return metadataUtilityInstance; + public List getMetadataListWithDesign(String spacePath, List metadataTypes) { + return MetadataUtilityWithDesign.getMetadataList(spacePath, metadataTypes); } - - @FunctionalInterface - public interface AfterGetReferenceWebComponentMetadata { - void invoke(GspMetadata commandMetadata, CmpMethodRefering methodReferingItem, GspMetadata webComponentMetadata, Object... outParameterArray); + public List getMetadataListWithDesign(String spacePath) { + return MetadataUtilityWithDesign.getMetadataList(spacePath, null); } /** - * 根据元数据名称及元数据所在路径获取元数据信息。该方法不支持跨工程引用 + * 创建表单元数据 如果已经存在 不进行创建,否则进行元数据的创建 * - * @param metadataFileName - * @param metadataPath - * @return + * @param metadata 待保存元数据 */ - public GspMetadata getMetadata(String metadataFileName, String metadataPath) { - if (StringUtility.isNullOrEmpty(metadataFileName) || StringUtility.isNullOrEmpty(metadataPath)) { - return null; - } - - return this.getMetadataService().loadMetadata(metadataFileName, metadataPath); + public void createMetadataIfNotExistsWithDesign(GspMetadata metadata) { + MetadataUtilityWithDesign.createMetadataIfNotExists(metadata); } + /** * 判断指定路径 指定文件名称元数据是否存在 * @@ -159,8 +125,8 @@ public final class MetadataUtility { * @param metadataId * @return */ - public boolean isMetaDataExistsWithMetadataIDAndPath(String spacePath, String metadataId) { - return this.getMetadataService().isMetadataExistInProject(spacePath, metadataId); + public boolean isMetaDataExistsWithMetadataIDAndPathWithDesign(String spacePath, String metadataId) { + return MetadataUtilityWithDesign.isMetaDataExistsWithMetadataIDAndPath(spacePath, metadataId); } /** @@ -170,8 +136,8 @@ public final class MetadataUtility { * @param fileName 对应的元数据文件名称 * @return */ - public boolean isMetaDataExistsWithMetadataPathAndFileName(String metaDataPath, String fileName) { - return this.getMetadataService().isMetadataExist(metaDataPath, fileName); + public boolean isMetaDataExistsWithMetadataPathAndFileNameWithDesign(String metaDataPath, String fileName) { + return MetadataUtilityWithDesign.isMetaDataExistsWithMetadataPathAndFileName(metaDataPath, fileName); } /** @@ -187,8 +153,8 @@ public final class MetadataUtility { // 如果在升级工具中执行 if (isInUpgradeTool) { - if (this.getCustomizationServerService() != null) { - return this.getCustomizationServerService().getMetadata(metadataId); + if (MetadataUtilityWithRuntimeRpc.hasCustomizationServerServiceInstance()) { + return MetadataUtilityWithRuntimeRpc.getMetadata(metadataId); } else { // 如果获取不到 那么设定执行运行时获取 executeEnvironment = ExecuteEnvironment.Runtime; @@ -197,25 +163,13 @@ public final class MetadataUtility { if (executeEnvironment.equals(ExecuteEnvironment.Design)) { // 设计时元数据获取 - return this.getMetadataInDesign(new MetadataURI(metadataId), null, null); + return MetadataUtilityWithDesign.getMetadata(new MetadataURI(metadataId), null, null); } else { - return this.getCustomizationService().getMetadata(metadataId); + return MetadataUtilityWithRuntime.getMetadata(metadataId); } } - /** - * @param metadataGetterParameter - * @return - */ - public GspMetadata getMetadataInDesign(MetadataGetterParameter metadataGetterParameter) { - return this.getMetadataInDesign(metadataGetterParameter.getTargetMetadataUri(), metadataGetterParameter.getSourceMetadataUri(), metadataGetterParameter.getTargetMetadataSpacePath()); - } - - private GspMetadata getMetadataInDesign(MetadataURI targetMetadataUri, MetadataURI sourceMetadataUri, String projectPath) { - return this.getRefCommonService().getRefMetadata(targetMetadataUri, sourceMetadataUri, projectPath); - } - /** * 运行时获取元数据接口方法 * 作为公共方法 会在别处进行使用 定义后不允许更改 @@ -223,67 +177,11 @@ public final class MetadataUtility { * @param metadataId * @return */ - public GspMetadata getMetadataInRuntime(String metadataId) { - return getMetadataWithEnvironment(metadataId, ExecuteEnvironment.Runtime, false); + public GspMetadata getMetadataWithRuntime(String metadataId) { + return MetadataUtilityWithRuntime.getMetadata(metadataId); } - /** - * 创建表单元数据 如果已经存在 不进行创建,否则进行元数据的创建 - * - * @param metadata 待保存元数据 - */ - public void createMetadataIfNotExists(GspMetadata metadata) { - MetadataService metadataService = this.getMetadataService(); - // 元数据文件不存在时进行创建 - if (!metadataService.isMetadataExist(metadata.getRelativePath(), metadata.getHeader().getFileName())) { - metadataService.createMetadata(metadata.getRelativePath(), metadata); - } - } - - - /** - * 删除对应的元数据物理文件 - * - * @param metadataPath 元数据所属路径 - * @param metadataFileName 元数据对应的文件名称 - */ - public void deleteMetadataInDisk(String metadataPath, String metadataFileName) { - if (StringUtility.isNullOrEmpty(metadataFileName)) { - return; - } - - this.getMetadataService().deleteMetadata(metadataPath, metadataFileName); - } - - private List getRefResourceMetadataCollection(String formMetadataId, String formMetadataPath) { - List resourceMetadataHeaderCollection = getRefResourceMetadataHeaderCollection(formMetadataId, formMetadataPath); - - // 获取资源元数据 - return getResourceMetadata(resourceMetadataHeaderCollection, formMetadataPath); - } - - private List getRefResourceMetadataHeaderCollection(String formMetadataId, String formMetadataPath) { - return this.getMetadataService().getResourceMetadata(formMetadataId, formMetadataPath); - } - - private List getResourceMetadata(List resourceMetadataHeaderArrayList, String formMetadataPath) { - if (resourceMetadataHeaderArrayList == null || resourceMetadataHeaderArrayList.size() == 0 || formMetadataPath == null || formMetadataPath.isEmpty()) { - return null; - } - - ArrayList resourceMetadataArrayList = new ArrayList(); - for (MetadataHeader resourceMetadataHeader : resourceMetadataHeaderArrayList) { - String resourceMetadataFileName = resourceMetadataHeader.getFileName(); - GspMetadata resourceMetadata = this.getMetadata(resourceMetadataFileName, formMetadataPath); - if (resourceMetadata != null) { - resourceMetadataArrayList.add(resourceMetadata); - } - } - - return resourceMetadataArrayList; - } - /** * 根据元数据相对路径获取工程信息 * @@ -291,27 +189,7 @@ public final class MetadataUtility { * @return */ public MetadataProject getMetadataProject(String metadataRelativePath) { - if (StringUtility.isNullOrEmpty(metadataRelativePath)) { - return null; - } - - return this.getMetadataProjectService().getMetadataProjInfo(metadataRelativePath); - } - - /** - * 获取开发元数据绝对路径 - * - * @param relativePath - * @return - */ - public String getAbsolutePath(String relativePath) { - //开发根路径 - String devRootPath = ManagerUtils.getDevRootPath(); - if (relativePath.startsWith(devRootPath)) { - return relativePath; - } - - return Paths.get(devRootPath).resolve(relativePath).toString(); + return MetadataProjectUtility.getMetadataProject(metadataRelativePath); } /** @@ -329,61 +207,24 @@ public final class MetadataUtility { } /** - * 获取工程信息 + * 获取开发元数据绝对路径 * - * @param projectPath + * @param relativePath * @return */ - private GspProject getProjectInformation(String projectPath) { - try { - return this.getGspProjectService().getGspProjectInfo(projectPath); - } catch (IOException e) { - WebLogger.Instance.error(e); - return null; + public String getAbsolutePath(String relativePath) { + //开发根路径 + String devRootPath = ManagerUtils.getDevRootPath(); + if (relativePath.startsWith(devRootPath)) { + return relativePath; } - } - /** - * 从工程路径中获取工程名称,统一使用小写 - * - * @param projectPath - * @return - */ - public String getProjectName(String projectPath) { - GspProject currentProject = getProjectInformation(projectPath); - return currentProject.getMetadataProjectName().toLowerCase(); + return FileUtility.combine(devRootPath, relativePath); } - /** - * 元数据保存 如果元数据已经存在,则先进行删除旧的元数据文件 - * - * @param metadata - */ - public void saveMetadata(GspMetadata metadata) { - this.getMetadataService().saveMetadata(metadata, Paths.get(metadata.getRelativePath()).resolve(metadata.getHeader().getFileName()).toString()); - } - - /** - * 从工程路径中获取su路径,统一使用小写 - * - * @param projectPath - * @return - */ - public String getServiceUnitPath(String projectPath) { - GspProject currentProject = getProjectInformation(projectPath); - return currentProject.getSuDeploymentPath().toLowerCase(); - } - - public List getMetadataList(String spacePath, List metadataTypes) { - return this.getMetadataService().getMetadataList(spacePath, metadataTypes); - } - - public List getMetadataList(String spacePath) { - return this.getMetadataService().getMetadataList(spacePath); - } // TODO:迁移到WebCommmand项目中 - public HashMap getReferenceComponentMetadata(GspMetadata commandMetadata, AfterGetReferenceWebComponentMetadata afterGetReferenceWebComponentMetadata, Object... parameterArray) { + public HashMap getReferenceComponentMetadata(GspMetadata commandMetadata, AfterGetReferenceWebComponentMetadataInvoker afterGetReferenceWebComponentMetadata, Object... parameterArray) { if (commandMetadata == null) { return null; } @@ -394,12 +235,12 @@ public final class MetadataUtility { } private void getReferenceWebComponentMetadata(GspMetadata commandMetadata, HashMap cmpList, List items, - HashMap componentCacheList, AfterGetReferenceWebComponentMetadata afterGetReferenceWebComponentMetadata, Object... parameterArray) { + HashMap componentCacheList, AfterGetReferenceWebComponentMetadataInvoker afterGetReferenceWebComponentMetadata, Object... parameterArray) { WebCommandsMetadata commandMetadataContent = null; try { commandMetadataContent = (WebCommandsMetadata) commandMetadata.getContent(); } catch (RuntimeException e) { - throw new GSPException("Web_GetReferenceWebComponent", "当前元数据非命令元数据。元数据id是:" + commandMetadata.getHeader().getId()); + throw new WebCustomException("当前元数据非命令元数据。元数据id是:" + commandMetadata.getHeader().getId()); } if (commandMetadataContent == null) { @@ -421,7 +262,7 @@ public final class MetadataUtility { private void getReferenceWebComponentCommandItemList(GspMetadata commandMetadata, List commandItemList, HashMap componentMetadataCollection, - HashMap componentCacheList, AfterGetReferenceWebComponentMetadata afterGetReferenceWebComponentMetadata, Object... parameterArray) { + HashMap componentCacheList, AfterGetReferenceWebComponentMetadataInvoker afterGetReferenceWebComponentMetadata, Object... parameterArray) { if (commandItemList == null || commandItemList.size() == 0) { return; } @@ -438,7 +279,7 @@ public final class MetadataUtility { metadataGetterParameter.setSourceMetadataNameSpace(commandMetadata.getHeader().getNameSpace()); metadataGetterParameter.setTargetMetadataType(MetadataTypeEnum.Component); - GspMetadata webComponentMetadata = getMetadataInDesign(metadataGetterParameter); + GspMetadata webComponentMetadata = getMetadataWithDesign(metadataGetterParameter); if (!componentMetadataCollection.containsKey(methodReferingItem.getComponentId())) { if (componentCacheList != null && componentCacheList.containsKey(methodReferingItem.getComponentId())) { @@ -447,7 +288,7 @@ public final class MetadataUtility { } else { WebComponentMetadata cmpMetadataContent = (WebComponentMetadata) webComponentMetadata.getContent(); if (cmpMetadataContent == null) { - throw new GSPException("", String.format("标识为'%1$s'的服务构件为null。", methodReferingItem.getComponentId())); + throw new WebCustomException(String.format("标识为'%1$s'的服务构件为null。", methodReferingItem.getComponentId())); } @@ -492,18 +333,4 @@ public final class MetadataUtility { } return devRootPath; } - - /** - * 获取指定类型的元数据 - * - * @param projectPath - * @param metadataType - * @return - */ - public List getMetadataListInProject(String projectPath, String metadataType) { - ArrayList searchedMetadataTypes = new ArrayList<>(); - searchedMetadataTypes.add(metadataType); - return this.getMetadataService().getMetadataList(projectPath, searchedMetadataTypes); - } - } diff --git a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithDesign.java b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithDesign.java new file mode 100644 index 00000000..683653b9 --- /dev/null +++ b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithDesign.java @@ -0,0 +1,168 @@ +/* + * 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.common.metadata; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.lcm.metadata.api.entity.uri.MetadataURI; +import com.inspur.edp.lcm.metadata.api.service.MetadataService; +import com.inspur.edp.lcm.metadata.api.service.RefCommonService; +import com.inspur.edp.web.common.utility.StringUtility; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; + +/** + * 设计时元数据操作 + * + * @author guozhiqi + */ +class MetadataUtilityWithDesign { + /** + * 获取指定工程路径下的元数据列表 + * 如果传递的过滤元数据类型为空 那么不进行过滤 + * + * @param spacePath + * @param metadataTypes + * @return + */ + public static List getMetadataList(String spacePath, List metadataTypes) { + if (metadataTypes == null || metadataTypes.isEmpty()) { + return MetadataServiceInstance.get().getMetadataList(spacePath); + } + return MetadataServiceInstance.get().getMetadataList(spacePath, metadataTypes); + } + + /** + * 获取指定类型的元数据 + * + * @param projectPath + * @param metadataType + * @return + */ + public static List getMetadataListInProject(String projectPath, String metadataType) { + ArrayList searchedMetadataTypes = new ArrayList<>(); + searchedMetadataTypes.add(metadataType); + return MetadataServiceInstance.get().getMetadataList(projectPath, searchedMetadataTypes); + } + + /** + * 根据元数据名称及元数据所在路径获取元数据信息。该方法不支持跨工程引用 + * + * @param metadataFileName + * @param metadataPath + * @return + */ + public static GspMetadata getMetadata(String metadataFileName, String metadataPath) { + if (StringUtility.isNullOrEmpty(metadataFileName) || StringUtility.isNullOrEmpty(metadataPath)) { + return null; + } + + return MetadataServiceInstance.get().loadMetadata(metadataFileName, metadataPath); + } + + /** + * 元数据保存 如果元数据已经存在,则先进行删除旧的元数据文件 + * + * @param metadata + */ + public static void saveMetadata(GspMetadata metadata) { + MetadataServiceInstance.get().saveMetadata(metadata, Paths.get(metadata.getRelativePath()).resolve(metadata.getHeader().getFileName()).toString()); + } + + /** + * 删除对应的元数据物理文件 + * + * @param metadataPath 元数据所属路径 + * @param metadataFileName 元数据对应的文件名称 + */ + public static void deleteMetadata(String metadataPath, String metadataFileName) { + if (StringUtility.isNullOrEmpty(metadataFileName)) { + return; + } + + MetadataServiceInstance.get().deleteMetadata(metadataPath, metadataFileName); + } + + /** + * 创建表单元数据 如果已经存在 不进行创建,否则进行元数据的创建 + * + * @param metadata 待保存元数据 + */ + public static void createMetadataIfNotExists(GspMetadata metadata) { + MetadataService metadataService = MetadataServiceInstance.get(); + // 元数据文件不存在时进行创建 + if (!metadataService.isMetadataExist(metadata.getRelativePath(), metadata.getHeader().getFileName())) { + metadataService.createMetadata(metadata.getRelativePath(), metadata); + } + } + + /** + * 判断指定路径 指定文件名称元数据是否存在 + * + * @param spacePath + * @param metadataId + * @return + */ + public static boolean isMetaDataExistsWithMetadataIDAndPath(String spacePath, String metadataId) { + return MetadataServiceInstance.get().isMetadataExistInProject(spacePath, metadataId); + } + + /** + * 判断指定工程路径下指定的元数据文件是否存在 + * + * @param metaDataPath 对应的元数据所在工程路径 + * @param fileName 对应的元数据文件名称 + * @return + */ + public static boolean isMetaDataExistsWithMetadataPathAndFileName(String metaDataPath, String fileName) { + return MetadataServiceInstance.get().isMetadataExist(metaDataPath, fileName); + } + + /** + * @param metadataGetterParameter + * @return + */ + public static GspMetadata getMetadata(MetadataGetterParameter metadataGetterParameter) { + return getMetadata(metadataGetterParameter.getTargetMetadataUri(), metadataGetterParameter.getSourceMetadataUri(), metadataGetterParameter.getTargetMetadataSpacePath()); + } + + public static GspMetadata getMetadata(MetadataURI targetMetadataUri, MetadataURI sourceMetadataUri, String projectPath) { + return RefCommonServiceInstance.get().getRefMetadata(targetMetadataUri, sourceMetadataUri, projectPath); + } + + /** + * 设计时元数据操作 + * 设计时根据元数据路径和名称使用该服务 + */ + private static class MetadataServiceInstance { + public static MetadataService get() { + return SpringBeanUtils.getBean(MetadataService.class); + } + } + + /** + * 设计时获取元数据 + * 设计时根据元数据id获取使用该服务 + */ + private static class RefCommonServiceInstance { + public static RefCommonService get() { + return SpringBeanUtils.getBean(RefCommonService.class); + } + } +} diff --git a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithRuntime.java b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithRuntime.java new file mode 100644 index 00000000..e12cf862 --- /dev/null +++ b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithRuntime.java @@ -0,0 +1,48 @@ +/* + * 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.common.metadata; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.metadata.rtcustomization.api.CustomizationService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +/** + * 运行时元数据操作 + * + * @author guozhiqi + */ +class MetadataUtilityWithRuntime { + + /** + * 运行时依据元数据id获取对应的元数据信息 + * + * @param metadataId + * @return + */ + public static GspMetadata getMetadata(String metadataId) { + return CustomizationServiceInstance.get().getMetadata(metadataId); + } + + /** + * 运行时元数据操作 + */ + private static class CustomizationServiceInstance { + public static CustomizationService get() { + return SpringBeanUtils.getBean(CustomizationService.class); + } + } +} diff --git a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithRuntimeRpc.java b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithRuntimeRpc.java new file mode 100644 index 00000000..161e2c9d --- /dev/null +++ b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithRuntimeRpc.java @@ -0,0 +1,56 @@ +/* + * 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.common.metadata; + +import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.metadata.rtcustomization.serverapi.CustomizationServerService; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; + +/** + * 主要应用于升级工具中执行元数据的读取 + * 此种情况下,可能存在对应的服务不存在的情况,因此需要针对性的进行处理 + */ +class MetadataUtilityWithRuntimeRpc { + /** + * 判断是否存在对应的服务实例 + * + * @return + */ + public static boolean hasCustomizationServerServiceInstance() { + return CustomizationServerServiceInstance.get() != null; + } + + /** + * 通过rpc调用获取对应的元数据服务 + * 主要应用于分su场景下 + * + * @param medaDataId + * @return + */ + public static GspMetadata getMetadata(String medaDataId) { + return CustomizationServerServiceInstance.get().getMetadata(medaDataId); + } + + /** + * 运行时元数据服务的rpc + */ + private static class CustomizationServerServiceInstance { + public static CustomizationServerService get() { + return SpringBeanUtils.getBean(CustomizationServerService.class); + } + } +} diff --git a/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/EntityBuilder.java b/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/EntityBuilder.java index 7ef61a64..57d58557 100644 --- a/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/EntityBuilder.java +++ b/web-designschema/src/main/java/com/inspur/edp/web/designschema/generator/EntityBuilder.java @@ -19,7 +19,7 @@ package com.inspur.edp.web.designschema.generator; import com.inspur.edp.das.commonmodel.IGspCommonObject; import com.inspur.edp.formserver.viewmodel.GspViewModelElement; import com.inspur.edp.udt.designtime.api.entity.SimpleDataTypeDef; -import com.inspur.edp.web.common.GSPException; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.designschema.elements.Entity; import com.inspur.edp.web.designschema.elements.Field; @@ -97,7 +97,7 @@ public class EntityBuilder { private void VerifyViewObject(IGspCommonObject viewObject) { if (viewObject.getIDElement() == null) { - throw new GSPException("", String.format("标识为'%1$s'的视图对象'%2$s'的IDElement属性不允许为null。", viewObject, viewObject.getName())); + throw new WebCustomException(String.format("标识为'%1$s'的视图对象'%2$s'的IDElement属性不允许为null。", viewObject, viewObject.getName())); } } } 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 995dc0cf..65fd4671 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 @@ -26,12 +26,10 @@ import com.inspur.edp.cef.designtime.api.element.GspAssociation; import com.inspur.edp.cef.designtime.api.element.GspElementObjectType; import com.inspur.edp.formserver.viewmodel.GspViewModelElement; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; -import com.inspur.edp.metadata.rtcustomization.api.CustomizationService; 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.environment.ExecuteEnvironment; -import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.StringUtility; @@ -642,7 +640,7 @@ public class FieldBuilder { } else { MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(id, null); metadataGetterParameter.setTargetMetadataNotFoundMessage("更新表单schema,关联字段元数据找不到,请修正。对应字段元数据id为:" + id); - return MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + return MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); } } } 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 01774fc7..3cf54eb8 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 @@ -232,7 +232,7 @@ public class FieldTypeBuilder { } else { MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(uri, null); metadataGetterParameter.setTargetMetadataNotFoundMessage("更新表单Schema,获取UDT字段元数据失败,元数据不存在。对应元数据id为:" + uri); - typeMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + typeMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); } if (typeMetadata == null) { throw new RuntimeException(String.format("未获取到id为'%1$s'的统一数据类型(UDT)元数据。", uri)); 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 7cef47cb..5861379c 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,9 +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.environment.ExecuteEnvironment; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; -import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.designschema.elements.Schema; @@ -60,7 +58,7 @@ public class FormMetadataUpdate { if ("vo".equals(schema.getSourceType())) { MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(schema.getId(), null); metadataGetterParameter.setTargetMetadataNotFoundMessage("根据表单元数据获取VO元数据为空,请检查表单元数据module>schemas>id 是否正确,此参数对应VO元数据id参数"); - GspMetadata metadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + GspMetadata metadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); GspViewModel viewObject = (GspViewModel) ((metadata.getContent() instanceof GspViewModel) ? metadata.getContent() : null); metadata.setContent(synchronizer.synchronize(formObject, schema, viewObject)); diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java index cc26d5f0..939f946b 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java @@ -25,10 +25,8 @@ import com.inspur.edp.lcm.metadata.api.IMetadataContent; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.api.entity.MetadataHeader; import com.inspur.edp.lcm.metadata.spi.event.MetadataEventArgs; -import com.inspur.edp.sgf.api.service.EapiMetadataDtService; import com.inspur.edp.web.common.entity.ResultCode; import com.inspur.edp.web.common.entity.ResultMessage; -import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; @@ -106,7 +104,7 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe FormDOM formDOM = SerializeUtility.getInstance().deserialize(templateContent, FormDOM.class); // 读取VO元数据 进行表单参数构造 MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(metadataInfoItem.getVoMetadataId(), FileUtility.getPlatformIndependentPath(parameter.getProjectPath())); - GspMetadata voMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + GspMetadata voMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); IMetadataContent voMetaContent = voMetadata.getContent(); GspViewModel gspViewModel = (GspViewModel) voMetaContent; SchemaBuilder schemaBuilder = new SchemaBuilder(); @@ -425,10 +423,10 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe formListMetadata.setContent(formMetadataContent); formListMetadata.setRefs(new ArrayList<>()); // 保存对应的表单元数据 -// if (MetadataUtility.getInstance().isMetaDataExistsWithMetadataPathAndFileName(formListMetadata.getRelativePath(), formListMetadata.getHeader().getFileName())) { -// MetadataUtility.getInstance().deleteMetadataInDisk(formListMetadata.getRelativePath(), formListMetadata.getHeader().getFileName()); +// if (MetadataUtility.getInstance().isMetaDataExistsWithMetadataPathAndFileNameWithDesign(formListMetadata.getRelativePath(), formListMetadata.getHeader().getFileName())) { +// MetadataUtility.getInstance().deleteMetadataWithDesign(formListMetadata.getRelativePath(), formListMetadata.getHeader().getFileName()); // } - MetadataUtility.getInstance().saveMetadata(formListMetadata); + MetadataUtility.getInstance().saveMetadataWithDesign(formListMetadata); // 更新对应的页面流 // 增加此操作的目的是为了在编译时可以将当前表单加入 diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/StateMachineMetadataGenerator.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/StateMachineMetadataGenerator.java index 82aabe0d..318bb402 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/StateMachineMetadataGenerator.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/statemachine/StateMachineMetadataGenerator.java @@ -66,7 +66,7 @@ public class StateMachineMetadataGenerator { IMetadataContent smMetadataContent = serializer.deserialize(smContent); smMetadata.setContent(smMetadataContent); // 保存状态机元数据 - MetadataUtility.getInstance().saveMetadata(smMetadata); + MetadataUtility.getInstance().saveMetadataWithDesign(smMetadata); List> stateMachineList = new ArrayList<>(); HashMap stateMachineMap = new HashMap<>(); diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java index 1f404c79..cd94cc68 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/webservice/DynamicFormWebServiceImpl.java @@ -83,9 +83,6 @@ public class DynamicFormWebServiceImpl implements DynamicFormWebService { formMetadataInfoCard.setTemplateInfo(formMetadataTemplateInfoCard); parameter.getFormMetadataInfoList().add(formMetadataInfoCard); - // 为了方便调试 临时增加固定目录 - MetadataUtility.getInstance().getMetadataService().setMetadataUri("testadd/testaddmodule/testaddproj/bo-testaddprojfront/metadata"); - dynamicCreateFormMetadataService.create(parameter); return resultMessage; diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java index b4e0579e..8eabd300 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java @@ -18,9 +18,8 @@ package com.inspur.edp.web.jitengine; import com.inspur.edp.cdp.web.component.metadata.define.WebComponentMetadata; import com.inspur.edp.lcm.metadata.api.entity.*; -import com.inspur.edp.web.common.GSPException; -import com.inspur.edp.web.common.GspProjectUtil; import com.inspur.edp.web.common.constant.FrontendProjectConstant; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.entity.NodeJsCommandEnum; import com.inspur.edp.web.common.entity.TerminalType; import com.inspur.edp.web.common.environment.ExecuteEnvironment; @@ -28,6 +27,7 @@ import com.inspur.edp.web.common.environment.checker.ExecuteEnvironmentChecker; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.io.NodejsFunctionUtility; import com.inspur.edp.web.common.logger.WebLogger; +import com.inspur.edp.web.common.metadata.GspProjectUtility; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.*; import com.inspur.edp.web.formmetadata.i18n.constant.I18nResourceConstant; @@ -157,9 +157,9 @@ public class JITEngineManager { boolean isJieXiForm = generateParameter != null && generateParameter.isForceUseJieXi(); String currentProjectPath = generateParameter.getProjectPath(); - String currentProjectName = GspProjectUtil.getProjectName(currentProjectPath); + String currentProjectName = GspProjectUtility.getProjectName(currentProjectPath); - GspProject gspProject = GspProjectUtil.getGspProject(currentProjectPath); + GspProject gspProject = GspProjectUtility.getProjectInformation(currentProjectPath); if (!FileUtility.isAbsolute(currentProjectPath)) { // 开发根路径 String devRootPath = MetadataUtility.getInstance().getDevRootPath(); @@ -209,7 +209,7 @@ public class JITEngineManager { } break; default: - throw new GSPException("WEB_GetRefNodeModulesPath", "暂不支持的终端类型:" + terminalType + "。请联系管理员处理。"); + throw new WebCustomException("暂不支持的终端类型:" + terminalType + "。请联系管理员处理。"); } return refNodeModulesPath; @@ -236,7 +236,7 @@ public class JITEngineManager { projectFormRelativeResolvePath = java.nio.file.Paths.get(FrontendProjectConstant.FRONTEND_PROJECT_COMPILE_PATH).resolve(TerminalType.MOBILE.getWebDevPathName()).toString(); break; default: - throw new GSPException("Web_GetProjectFormRelativeResolvePath", "未识别的终端类型,请联系管理员处理。当前终端类型是:" + terminalType); + throw new WebCustomException("未识别的终端类型,请联系管理员处理。当前终端类型是:" + terminalType); } return projectFormRelativeResolvePath; @@ -263,7 +263,7 @@ public class JITEngineManager { projectFormRelativeGeneratePath = java.nio.file.Paths.get(FrontendProjectConstant.FRONTEND_PROJECT_COMPILE_PATH).resolve(TerminalType.MOBILE.getAppPathName()).toString(); break; default: - throw new GSPException("Web_GetProjectFormRelativeGeneratePath", "未识别的终端类型,请联系管理员处理。当前终端类型是:" + terminalType); + throw new WebCustomException("未识别的终端类型,请联系管理员处理。当前终端类型是:" + terminalType); } return projectFormRelativeGeneratePath; @@ -646,7 +646,7 @@ public class JITEngineManager { projectBuildPath = FileUtility.combine(projectPath, FrontendProjectConstant.FRONTEND_PROJECT_COMPILE_PATH, TerminalType.MOBILE.getAppPathName()); break; default: - throw new GSPException("WEB_GetProjectBuildPath", "暂不支持的终端类型:" + terminalType + "。请联系管理员处理。"); + throw new WebCustomException("暂不支持的终端类型:" + terminalType + "。请联系管理员处理。"); } return projectBuildPath; diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/babelgrnerate/GenerateForBabel.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/babelgrnerate/GenerateForBabel.java index 9e96a5bd..c8332b38 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/babelgrnerate/GenerateForBabel.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/babelgrnerate/GenerateForBabel.java @@ -17,11 +17,11 @@ package com.inspur.edp.web.jitengine.babelgrnerate; import com.inspur.edp.lcm.metadata.api.entity.GspProject; -import com.inspur.edp.web.common.GspProjectUtil; import com.inspur.edp.web.common.constant.FrontendProjectConstant; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.io.NodejsFunctionUtility; +import com.inspur.edp.web.common.metadata.GspProjectUtility; import com.inspur.edp.web.common.utility.CommandLineUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.jitengine.NpmInstallBeforeGenerate; @@ -33,16 +33,16 @@ public class GenerateForBabel { return; } - String currentProjectName = GspProjectUtil.getProjectName(currentProjectPath); + String currentProjectName = GspProjectUtility.getProjectName(currentProjectPath); if (!FileUtility.isAbsolute(currentProjectPath)) { currentProjectPath = FileUtility.getAbsolutePathHead(currentProjectPath) + currentProjectPath; } - GspProject gspProject = GspProjectUtil.getGspProject(currentProjectPath); + GspProject gspProject = GspProjectUtility.getProjectInformation(currentProjectPath); String serviceUnitPath = gspProject.getSuDeploymentPath(); - String formPublishAbsolutePath = currentProjectPath + "/src" + "/"+ FrontendProjectConstant.PROJECT_GENERATE_PATH_FOR_BABEL; + String formPublishAbsolutePath = currentProjectPath + "/src" + "/" + FrontendProjectConstant.PROJECT_GENERATE_PATH_FOR_BABEL; ProjectCompileContext projectCompileContext = new ProjectCompileContext(currentProjectName, java.nio.file.Paths.get(refNodeModulesBasePath).resolve("node_modules").toString(), "pc", "angular", currentProjectPath + "/src" + "/webdev", formPublishAbsolutePath, diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/BaseMetaDataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/BaseMetaDataManager.java index 1a52aab4..b6d41d05 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/BaseMetaDataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/BaseMetaDataManager.java @@ -69,7 +69,7 @@ public class BaseMetaDataManager { } public GspMetadata getMetadata(String metaDataFileName, String metaDataFilePath) { - GspMetadata metadata = MetadataUtility.getInstance().getMetadata(metaDataFileName, metaDataFilePath); + GspMetadata metadata = MetadataUtility.getInstance().getMetadataWithDesign(metaDataFileName, metaDataFilePath); if (metadata != null) { relativePath = metadata.getRelativePath(); } 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 ac89e4d5..4c0e5b7a 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 @@ -193,7 +193,7 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { File deleteFileInfo = new File(FileUtility.combine(formMetadataRelativePath, t)); if (deleteFileInfo.exists()) { // 执行元数据删除 - MetadataUtility.getInstance().getMetadataService().deleteMetadata(formMetadataRelativePath, t); + MetadataUtility.getInstance().deleteMetadataWithDesign(formMetadataRelativePath, t); } }); } catch (Exception ex) { @@ -248,23 +248,23 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { String projectRelativePath = MetadataUtility.getInstance().getMetadataProjectPath(relativePath); String relateResource = ResourceMetadataType.ZH_CH.getFileName(fileName); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateResource); + MetadataUtility.getInstance().deleteMetadataWithDesign(relativePath, relateResource); String relateEnResource = ResourceMetadataType.EN.getFileName(fileName); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateEnResource); + MetadataUtility.getInstance().deleteMetadataWithDesign(relativePath, relateEnResource); String relateZh_CHTResource = ResourceMetadataType.ZH_CHT.getFileName(fileName); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateZh_CHTResource); + MetadataUtility.getInstance().deleteMetadataWithDesign(relativePath, relateZh_CHTResource); // 删除帮助eapi String eapiName = name + "_hlp.eapi"; String eapiFilePath = FileUtility.combine(projectRelativePath, "eapi"); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(eapiFilePath, eapiName); + MetadataUtility.getInstance().deleteMetadataWithDesign(eapiFilePath, eapiName); // 删除导航帮助 nav eapi String navEapiName = name + "_hlp_nav.eapi"; String navEapiFilePath = FileUtility.combine(projectRelativePath, "eapi"); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(navEapiFilePath, navEapiName); + MetadataUtility.getInstance().deleteMetadataWithDesign(navEapiFilePath, navEapiName); // 删除导航帮助 nav String relateNavVO = name + "_hlp_nav.vo"; @@ -282,16 +282,16 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { * @param relativePath */ private void deleteHelpVoAndRelateMetadata(String relateVO, String relativePath) { - MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateVO); + MetadataUtility.getInstance().deleteMetadataWithDesign(relativePath, relateVO); String relateVORes = ResourceMetadataType.ZH_CH.getFileName(relateVO); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateVORes); + MetadataUtility.getInstance().deleteMetadataWithDesign(relativePath, relateVORes); String relateVOEnRes = ResourceMetadataType.EN.getFileName(relateVO); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateVOEnRes); + MetadataUtility.getInstance().deleteMetadataWithDesign(relativePath, relateVOEnRes); String relateVOZHCHTRes = ResourceMetadataType.ZH_CHT.getFileName(relateVO); - MetadataUtility.getInstance().getMetadataService().deleteMetadata(relativePath, relateVOZHCHTRes); + MetadataUtility.getInstance().deleteMetadataWithDesign(relativePath, relateVOZHCHTRes); } } @@ -341,7 +341,7 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { // 读取表单元数据 解析其中的eapiid // 如果传递的表单元数据中内容为空 if (metadataEventArgs.getMetadata().getContent() == null) { - GspMetadata metadata = MetadataUtility.getInstance().getMetadata(metadataEventArgs.getMetadata().getHeader().getFileName(), metadataEventArgs.getMetadata().getRelativePath()); + GspMetadata metadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataEventArgs.getMetadata().getHeader().getFileName(), metadataEventArgs.getMetadata().getRelativePath()); if (metadata != null) { metadataEventArgs.getMetadata().setContent(metadata.getContent()); } @@ -368,7 +368,7 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { File deleteFileInfo = new File(FileUtility.combine(formMetadataRelativePath, t)); if (deleteFileInfo.exists()) { // 执行元数据删除 - MetadataUtility.getInstance().getMetadataService().deleteMetadata(formMetadataRelativePath, t); + MetadataUtility.getInstance().deleteMetadataWithDesign(formMetadataRelativePath, t); } }); @@ -395,10 +395,10 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(strEapiId, projectPath); metadataGetterParameter.setSourceMetadata(sourceFormMetadata, MetadataTypeEnum.Frm); - GspMetadata eapiMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + GspMetadata eapiMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (eapiMetadata != null) { // eapi 单独删除 - MetadataUtility.getInstance().getMetadataService().deleteMetadata(eapiMetadata.getRelativePath(), eapiMetadata.getHeader().getFileName()); + MetadataUtility.getInstance().deleteMetadataWithDesign(eapiMetadata.getRelativePath(), eapiMetadata.getHeader().getFileName()); } } } 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 0d484e1e..af2697de 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,7 +21,6 @@ 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.environment.ExecuteEnvironment; import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataUtility; @@ -57,7 +56,7 @@ class WebCommandMetadataDelete { } } if (json != null && json.getModule() != null && json.getModule().getServiceRefs() != null && json.getModule().getServiceRefs().size() > 0) { - List metadataList = MetadataUtility.getInstance().getMetadataList(projectInfo.getProjectPath()); + List metadataList = MetadataUtility.getInstance().getMetadataListWithDesign(projectInfo.getProjectPath()); if (metadataList == null || metadataList.size() == 0) { return deleteList; } @@ -127,7 +126,7 @@ class WebCommandMetadataDelete { private WebCommandsMetadata getWebCommands(String id) { MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(id, null); metadataGetterParameter.setTargetMetadataNotFoundMessage("获取命令元数据为空,对应元数据id为:" + id); - GspMetadata webCommandMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + GspMetadata webCommandMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (webCommandMetadata == null) { return null; } @@ -137,7 +136,7 @@ class WebCommandMetadataDelete { public WebComponentMetadata getComponentMetadata(String id) { MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(id, null); metadataGetterParameter.setTargetMetadataNotFoundMessage("获取WebComponent元数据为空,对应元数据id为:" + id); - GspMetadata webComponentMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + GspMetadata webComponentMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (webComponentMetadata == null) { throw new RuntimeException("load webComponent metadata is null,the metaDataId is " + id); } @@ -241,7 +240,7 @@ class WebCommandMetadataDelete { MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(cmpId, null); metadataGetterParameter.setTargetMetadataNotFoundMessage("获取web构件元数据为空,对应元数据id为:" + cmpId); - GspMetadata metadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + GspMetadata metadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (metadata != null) { String path = metadata.getRelativePath(); 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 6c535abc..4fad37cd 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 @@ -16,8 +16,7 @@ package com.inspur.edp.web.formmetadata.i18n.component; - -import com.inspur.edp.web.common.GSPException; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.formmetadata.i18n.component.strategy.namestrategy.ComponentNameType; @@ -102,7 +101,7 @@ public class ComponentUtility { componentId = getName(component); } } - throw new GSPException("", 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)); } } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataCmdManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataCmdManager.java index 23d7cede..d80ec9c0 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataCmdManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataCmdManager.java @@ -22,7 +22,7 @@ import com.inspur.edp.lcm.metadata.api.entity.MetadataDto; import com.inspur.edp.lcm.metadata.api.service.MetadataService; import com.inspur.edp.web.command.component.metadata.CmpMethodRefering; import com.inspur.edp.web.command.component.metadata.WebCommandsMetadata; -import com.inspur.edp.web.common.GSPException; +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.metadata.MetadataGetterParameter; @@ -31,11 +31,9 @@ import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; -import com.inspur.edp.web.tsfile.api.service.TsFileService; import io.iec.edp.caf.commons.utils.SpringBeanUtils; import com.inspur.edp.lcm.metadata.api.entity.MetadataType; -import java.io.File; import java.nio.file.Paths; import java.util.ArrayList; import java.util.HashMap; @@ -62,9 +60,9 @@ public class FormMetadataCmdManager { MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(webcmdId, sourceFormMetadata.getRelativePath()); metadataGetterParameter.setSourceMetadata(sourceFormMetadata, MetadataTypeEnum.Frm); - GspMetadata webCmdMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + GspMetadata webCmdMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (webCmdMetadata == null) { - throw new GSPException("Web_Replicate", "复制表单元数据时,获取命令构件失败。待获取命令构件ID是:" + webcmdId); + throw new WebCustomException("复制表单元数据时,获取命令构件失败。待获取命令构件ID是:" + webcmdId); } WebCommandsMetadata webCommandMetadataContent = (WebCommandsMetadata) webCmdMetadata.getContent(); @@ -87,7 +85,7 @@ public class FormMetadataCmdManager { webCommandMetadataReplicationContext.setTargetMetadataDescription(webCommandMetadataDto); GspMetadata replicateWebCommandMetadata = MetadataCloneManager.cloneMetadata(webCommandMetadataReplicationContext); - MetadataUtility.getInstance().createMetadataIfNotExists(replicateWebCommandMetadata); + MetadataUtility.getInstance().createMetadataIfNotExistsWithDesign(replicateWebCommandMetadata); // 更新表单内容关联webcmd String oldWebCmdId = webcmd.get("id").toString(); @@ -107,7 +105,7 @@ public class FormMetadataCmdManager { MetadataUtility.getInstance().getReferenceComponentMetadata(replicateWebCommandMetadata, FormMetadataCmdManager::UpdateWebComponentMetadata, context); // 保存命令元数据 - MetadataUtility.getInstance().saveMetadata(replicateWebCommandMetadata); + MetadataUtility.getInstance().saveMetadataWithDesign(replicateWebCommandMetadata); } } } @@ -150,9 +148,9 @@ public class FormMetadataCmdManager { // TODO:提取RelativePath赋值操作,这样就无需先clone元数据再执行是否存在校验 if (!CheckIfMetadataFileExits(replicateWebComponentMetadata)) { - MetadataUtility.getInstance().createMetadataIfNotExists(replicateWebComponentMetadata); + MetadataUtility.getInstance().createMetadataIfNotExistsWithDesign(replicateWebComponentMetadata); } else { - replicateWebComponentMetadata = MetadataUtility.getInstance().getMetadata(replicateWebComponentMetadata.getHeader().getFileName(), replicateWebComponentMetadata.getRelativePath()); + replicateWebComponentMetadata = MetadataUtility.getInstance().getMetadataWithDesign(replicateWebComponentMetadata.getHeader().getFileName(), replicateWebComponentMetadata.getRelativePath()); } // 更新命令构件关联的服务构件 @@ -167,7 +165,7 @@ public class FormMetadataCmdManager { // 拷贝服务构件关联的文件(.ts文件) FormMetadataCmpSourceTsFileCloneManager.copy(componentMetadataContent, sourceProjectName, targetMetadataDescription.getProjectName(), componentMetadata, replicateWebComponentMetadata); - MetadataUtility.getInstance().saveMetadata(replicateWebComponentMetadata); + MetadataUtility.getInstance().saveMetadataWithDesign(replicateWebComponentMetadata); } private static boolean CheckIfMetadataFileExits(GspMetadata 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 09130a91..bd136365 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 @@ -101,7 +101,7 @@ public class FormMetadataReplicator { FormDOM replicateFormDOM = FormMetadataContentService.getInstance().getFormContent(replicateFormMetadataContent); // 磁盘中创建表单元数据 - MetadataUtility.getInstance().createMetadataIfNotExists(replicateFormMetadata); + MetadataUtility.getInstance().createMetadataIfNotExistsWithDesign(replicateFormMetadata); // 1. 拷贝VO元数据及关联元数据 FormMetadataVoManager.copyFormMetadataVo(context, sourceFormMetadata, targetMetadataDescription, replicateFormDOM, IsDebug); @@ -116,7 +116,7 @@ public class FormMetadataReplicator { FormMetadataContentService.getInstance().setFormContent(replicateFormMetadataContent, replicateFormDOM); // 前置条件:保存前,对应的元数据文件已存在 - MetadataUtility.getInstance().saveMetadata(replicateFormMetadata); + MetadataUtility.getInstance().saveMetadataWithDesign(replicateFormMetadata); // 同步复制表单元数据的英文、繁体中文资源元数据 copyResourceMetadataWithSpecificLanguage(context, sourceFormMetadata, replicateFormMetadata); @@ -124,7 +124,7 @@ public class FormMetadataReplicator { WebLogger.Instance.error("表单复制出现错误," + ex.getMessage() + ex.getStackTrace()); // 执行元数据的清理工作 此处仅删除表单元数据 因此存在表单元数据级联删除动作 if (replicateFormMetadata != null) { - MetadataUtility.getInstance().deleteMetadataInDisk(replicateFormMetadata.getRelativePath(), replicateFormMetadata.getHeader().getFileName()); + MetadataUtility.getInstance().deleteMetadataWithDesign(replicateFormMetadata.getRelativePath(), replicateFormMetadata.getHeader().getFileName()); } throw new RuntimeException(ex); @@ -136,15 +136,15 @@ public class FormMetadataReplicator { private static void copyResourceMetadataWithSpecificLanguage(MetadataReplicationContext context, GspMetadata sourceFormMetadata, GspMetadata replicateFormMetadata) { String targetZHResourceFileName = ResourceMetadataType.ZH_CH.getFileName(sourceFormMetadata.getHeader().getFileName()); - if (!MetadataUtility.getInstance().isMetaDataExistsWithMetadataPathAndFileName(sourceFormMetadata.getRelativePath(), targetZHResourceFileName)) { + if (!MetadataUtility.getInstance().isMetaDataExistsWithMetadataPathAndFileNameWithDesign(sourceFormMetadata.getRelativePath(), targetZHResourceFileName)) { return; } - GspMetadata zhResourceMetadata = MetadataUtility.getInstance().getMetadata(targetZHResourceFileName, sourceFormMetadata.getRelativePath()); + GspMetadata zhResourceMetadata = MetadataUtility.getInstance().getMetadataWithDesign(targetZHResourceFileName, sourceFormMetadata.getRelativePath()); // 由于直接拷贝的资源元数据的relativepath 不正确 进行调整 zhResourceMetadata.setRelativePath(sourceFormMetadata.getRelativePath()); - MetadataUtility.getInstance().saveMetadata(zhResourceMetadata); + MetadataUtility.getInstance().saveMetadataWithDesign(zhResourceMetadata); // 拷贝对应的资源元数据 copyResourceMetadataWithSpecificLanguage(context, sourceFormMetadata, replicateFormMetadata, zhResourceMetadata, ResourceMetadataType.EN); @@ -157,8 +157,8 @@ public class FormMetadataReplicator { String sourceResourceFileName = resourceMetadataType.getFileName(sourceFormMetadata.getHeader().getFileName()); String targetResourceFileName = resourceMetadataType.getFileName(replicateFormMetadata.getHeader().getFileName()); - if (MetadataUtility.getInstance().isMetaDataExistsWithMetadataPathAndFileName(sourceFormMetadata.getRelativePath(), sourceResourceFileName)) { - GspMetadata resourceMetadata = MetadataUtility.getInstance().getMetadata(sourceResourceFileName, sourceFormMetadata.getRelativePath()); + if (MetadataUtility.getInstance().isMetaDataExistsWithMetadataPathAndFileNameWithDesign(sourceFormMetadata.getRelativePath(), sourceResourceFileName)) { + GspMetadata resourceMetadata = MetadataUtility.getInstance().getMetadataWithDesign(sourceResourceFileName, sourceFormMetadata.getRelativePath()); MetadataReplicationContext resourceContext = MetadataReplicationContextService.create(context.getSourceProjectName(), resourceMetadata, replicateFormMetadata.getHeader().getCode() + resourceMetadataType.getSuffixWithoutResExtension(), replicateFormMetadata.getHeader().getName() + resourceMetadataType.getSuffixWithoutResExtension(), context.getSourceProjectName()); resourceContext.setTargetFileName(targetResourceFileName); @@ -193,7 +193,7 @@ public class FormMetadataReplicator { } } - MetadataUtility.getInstance().saveMetadata(targetResourceMetadata); + MetadataUtility.getInstance().saveMetadataWithDesign(targetResourceMetadata); } } 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 1c0d222d..03b81e0a 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 @@ -45,7 +45,7 @@ class FormMetadataSmManager { } MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(stateMachineId, sourceFormMetadata.getRelativePath()); metadataGetterParameter.setSourceMetadata(sourceFormMetadata, MetadataTypeEnum.Frm); - GspMetadata stateMachineMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + GspMetadata stateMachineMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); MetadataDto stateMachineMetadataDto = new MetadataDto(); stateMachineMetadataDto.setCode(stateMachineMetadata.getHeader().getCode().replace(sourceFormMetadata.getHeader().getCode(), targetMetadataDescription.getCode())); stateMachineMetadataDto.setName(stateMachineMetadata.getHeader().getName().replace(sourceFormMetadata.getHeader().getName(), targetMetadataDescription.getName())); @@ -59,9 +59,9 @@ class FormMetadataSmManager { stateMachineMetadataReplicationContext.setTargetMetadataDescription(stateMachineMetadataDto); GspMetadata replicateStateMachineMetadata = MetadataCloneManager.cloneMetadata(stateMachineMetadataReplicationContext); - MetadataUtility.getInstance().createMetadataIfNotExists(replicateStateMachineMetadata); + MetadataUtility.getInstance().createMetadataIfNotExistsWithDesign(replicateStateMachineMetadata); - MetadataUtility.getInstance().saveMetadata(replicateStateMachineMetadata); + MetadataUtility.getInstance().saveMetadataWithDesign(replicateStateMachineMetadata); //原stateMachineId stateMachineId = replicateStateMachineMetadata.getHeader().getId(); // 更新表单内容statemachine 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 4286fc3c..3c5dc38b 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 @@ -52,7 +52,7 @@ class FormMetadataVoManager { MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(viewObjectId, sourceFormMetadata.getRelativePath()); metadataGetterParameter.setSourceMetadata(sourceFormMetadata, MetadataTypeEnum.Frm); - GspMetadata viewObjectMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + GspMetadata viewObjectMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (viewObjectMetadata == null) { throw new RuntimeException("根据VoId获取对应元数据为空,对应voId为:" + viewObjectId); } @@ -71,9 +71,9 @@ class FormMetadataVoManager { GspMetadata replicateViewObjectMetadata = MetadataCloneManager.cloneMetadata(viewObjectMetadataReplicationContext); // 为了避免删除vo元数据时依赖eapi 先进行删除eapi - MetadataUtility.getInstance().createMetadataIfNotExists(replicateViewObjectMetadata); + MetadataUtility.getInstance().createMetadataIfNotExistsWithDesign(replicateViewObjectMetadata); - MetadataUtility.getInstance().saveMetadata(replicateViewObjectMetadata); + MetadataUtility.getInstance().saveMetadataWithDesign(replicateViewObjectMetadata); // 更新表单内容关联VO schema.put("id", replicateViewObjectMetadata.getHeader().getId()); diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetaDataReplicateBeforeValidator.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetaDataReplicateBeforeValidator.java index 94f43b7b..6f140968 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetaDataReplicateBeforeValidator.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetaDataReplicateBeforeValidator.java @@ -37,7 +37,7 @@ class MetaDataReplicateBeforeValidator { public ResultMessage validate(GspMetadata targetMetaData) { ResultMessage resultMessage = null; // 判断目标元数据是否存在 - boolean isExists = MetadataUtility.getInstance().isMetaDataExistsWithMetadataPathAndFileName(targetMetaData.getRelativePath(), targetMetaData.getHeader().getFileName()); + boolean isExists = MetadataUtility.getInstance().isMetaDataExistsWithMetadataPathAndFileNameWithDesign(targetMetaData.getRelativePath(), targetMetaData.getHeader().getFileName()); if (isExists) { resultMessage = ResultCode.info("目标元数据存在,无法进行复制。对应目标元数据名称:" + targetMetaData.getHeader().getName() + ",所属工程路径:" + targetMetaData.getRelativePath()); return resultMessage; diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetadataCloneManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetadataCloneManager.java index d1a0a79a..b5ae051a 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetadataCloneManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetadataCloneManager.java @@ -19,7 +19,7 @@ package com.inspur.edp.web.formmetadata.replication; import com.inspur.edp.lcm.metadata.api.IMetadataContent; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.api.entity.MetadataDto; -import com.inspur.edp.web.common.GSPException; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.formmetadata.replication.adjust.CloneAdjustStrategyFactory; @@ -47,7 +47,7 @@ class MetadataCloneManager { // 现有元数据描述和元数据内容存在两个层次的数据一致性问题:元数据Code和元数据命名空间。当前,仅处理元数据Code上的数据不一致问题,元数据命令空间的数据不一致后续处理。 if ((metadataDto.getNameSpace() != null && !metadataDto.getNameSpace().equals(sourceMetadata.getHeader().getNameSpace())) || (metadataDto.getBizobjectID() != null && !metadataDto.getBizobjectID().equals(sourceMetadata.getHeader().getBizobjectID()))) { - throw new GSPException("Web_Replicate", "目前仅支持同一个业务对象(Business Object)内的表单复制。如果需要其他场景的复制,请联系开发人员。"); + throw new WebCustomException("目前仅支持同一个业务对象(Business Object)内的表单复制。如果需要其他场景的复制,请联系开发人员。"); } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetadataReplicationContextService.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetadataReplicationContextService.java index 8a756b29..7e22d919 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetadataReplicationContextService.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/MetadataReplicationContextService.java @@ -18,7 +18,7 @@ package com.inspur.edp.web.formmetadata.replication; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.api.entity.MetadataDto; -import com.inspur.edp.web.common.GSPException; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.utility.StringUtility; import java.util.regex.Pattern; @@ -77,7 +77,7 @@ class MetadataReplicationContextService { String[] sourceMetadataSegmentPathCollection = sourceMetadata.getRelativePath().replace("\\", "/").split(Pattern.quote("/"), -1); ProjectInformationManager.updateTargetProjectInformation(sourceMetadataSegmentPathCollection, sourceProjectName, targetProjectName); } catch (RuntimeException e) { - throw new GSPException("Web_Replicate", "复制表单时,同步目标工程信息失败。源表单ID是:" + sourceMetadata.getHeader().getId() + "更多异常信息如下:" + e.getMessage(), e); + throw new WebCustomException("复制表单时,同步目标工程信息失败。源表单ID是:" + sourceMetadata.getHeader().getId() + "更多异常信息如下:" + e.getMessage(), e); } } } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/ProjectInformationManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/ProjectInformationManager.java index cad72027..123ce755 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/ProjectInformationManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/ProjectInformationManager.java @@ -21,7 +21,7 @@ import com.inspur.edp.lcm.metadata.api.entity.MetadataPackageHeader; import com.inspur.edp.lcm.metadata.api.entity.MetadataProject; import com.inspur.edp.lcm.metadata.api.entity.ProjectHeader; import com.inspur.edp.lcm.metadata.api.mvnEntity.MavenPackageRefs; -import com.inspur.edp.web.common.GSPException; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; @@ -147,7 +147,7 @@ public class ProjectInformationManager { public static MetadataProject getSourceProjectInformation(String[] soureMetadataSegmentPathColleciton, String sourceProjectName) { if (soureMetadataSegmentPathColleciton == null || soureMetadataSegmentPathColleciton.length < 4) { - throw new GSPException("Web_Replicate", "源表单存储相对路径属性不包含工程名,请检查。"); + throw new WebCustomException("源表单存储相对路径属性不包含工程名,请检查。"); } StringBuilder sourceProjectRelativePath = new StringBuilder(); diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetadataRTService.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetadataRTService.java index 173b031a..6effd60f 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetadataRTService.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetadataRTService.java @@ -45,7 +45,7 @@ public class FormMetadataRTService { ArrayList filterType = new ArrayList<>(); filterType.add(".frm"); - List formMetadataList = MetadataUtility.getInstance().getMetadataList(relativePath, filterType); + List formMetadataList = MetadataUtility.getInstance().getMetadataListWithDesign(relativePath, filterType); if (formMetadataList == null || formMetadataList.size() == 0) { return null; } @@ -57,7 +57,7 @@ public class FormMetadataRTService { if (formMetadata.getContent() == null) { MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(formMetadata.getHeader().getId(), formMetadata.getRelativePath()); metadataGetterParameter.setSourceMetadata(viewModelMetadata, MetadataTypeEnum.ViewModel); - formMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + formMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); } FormMetadataContentService.ParameterFromMetadataResult formParameter = FormMetadataContentService.getInstance().getParameterFromFormMetadata(formMetadata); // 为了应对一个viewModel可能对应多个表单的情况 diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetataService.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetataService.java index c81fc599..b6c63314 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetataService.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetataService.java @@ -25,7 +25,7 @@ import com.inspur.edp.lcm.metadata.api.entity.I18nResource; import com.inspur.edp.lcm.metadata.api.entity.MetadataHeader; import com.inspur.edp.lcm.metadata.api.exception.MetadataNotFoundException; import com.inspur.edp.lcm.metadata.api.service.MetadataService; -import com.inspur.edp.web.common.GSPException; +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; @@ -58,7 +58,7 @@ import java.util.stream.Collectors; public class FormMetataService { public static void synchronizeLanuagePackage(String formMetadataFileName, String formMetadataPath) { // (1) 获取表单元数据 - GspMetadata formMetadata = MetadataUtility.getInstance().getMetadata(formMetadataFileName, formMetadataPath); + GspMetadata formMetadata = MetadataUtility.getInstance().getMetadataWithDesign(formMetadataFileName, formMetadataPath); // (2) 查找到关联的资源元数据 GspMetadata currentResourceMetadata = getRefResourceMetadata(formMetadata.getHeader().getId(), formMetadataPath); @@ -184,7 +184,7 @@ public class FormMetataService { ArrayList resourceMetadataList = new ArrayList<>(); for (MetadataHeader resouceMetadataHeader : resourceMetadataHeaderList) { String resouceMetadataFileName = resouceMetadataHeader.getFileName(); - GspMetadata resourceMetadata = MetadataUtility.getInstance().getMetadata(resouceMetadataFileName, formMetadataPath); + GspMetadata resourceMetadata = MetadataUtility.getInstance().getMetadataWithDesign(resouceMetadataFileName, formMetadataPath); if (resourceMetadata != null) { resourceMetadataList.add(resourceMetadata); } @@ -198,7 +198,7 @@ public class FormMetataService { */ public static void exportLanguagePackage(String formMetadataFileName, String formMetadataPath) { // (1) 获取表单元数据 - GspMetadata formMetadata = MetadataUtility.getInstance().getMetadata(formMetadataFileName, formMetadataPath); + GspMetadata formMetadata = MetadataUtility.getInstance().getMetadataWithDesign(formMetadataFileName, formMetadataPath); exportLanguagePackage(formMetadata); } @@ -228,7 +228,7 @@ public class FormMetataService { * 同步本地语言包 */ public static void synchronizeLocalLanuagePackage(String formMetadataFileName, String formMetadataPath) { - GspMetadata formMetadata = MetadataUtility.getInstance().getMetadata(formMetadataFileName, formMetadataPath); + GspMetadata formMetadata = MetadataUtility.getInstance().getMetadataWithDesign(formMetadataFileName, formMetadataPath); synchronizeLocalLanuagePackage(formMetadata); } @@ -285,29 +285,29 @@ public class FormMetataService { public static ResultMessage replicateForm(String sourceMetadataId, String sourceMetadataRelativePath, String targetMetadataCode, String targetMetadataName, String targetProjectName) { if (StringUtility.isNullOrEmpty(sourceMetadataId) || StringUtility.isNullOrEmpty(sourceMetadataRelativePath)) { WebLogger.Instance.error("待复制表单元数据ID或路径为空。请检查前端请求参数是否正常。", FormMetataService.class.getName()); - throw new GSPException("Web_Replicate", "待复制表单元数据ID或路径为空。请检查前端请求参数是否正常。"); + throw new WebCustomException("待复制表单元数据ID或路径为空。请检查前端请求参数是否正常。"); } if (StringUtility.isNullOrEmpty(targetMetadataCode) || StringUtility.isNullOrEmpty(targetMetadataName)) { - throw new GSPException("Web_Replicate", "目标元数据Code或Name不能为空"); + throw new WebCustomException("目标元数据Code或Name不能为空"); } //根据当前表单元数据id 获取对应的元数据信息 // 判断当前表单元数据是否不存在 - if (!MetadataUtility.getInstance().isMetaDataExistsWithMetadataIDAndPath(sourceMetadataRelativePath, sourceMetadataId)) { + if (!MetadataUtility.getInstance().isMetaDataExistsWithMetadataIDAndPathWithDesign(sourceMetadataRelativePath, sourceMetadataId)) { return ResultCode.info("待复制的表单元数据不存在,请确认该元数据是否已被删除。"); } MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(sourceMetadataId, sourceMetadataRelativePath); metadataGetterParameter.setTargetMetadataNotFoundMessage("表单复制失败,待复制的表单元数据不存在,请确认该元数据是否已被删除。"); - GspMetadata sourceFormMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + GspMetadata sourceFormMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (sourceFormMetadata == null) { - throw new GSPException("Web_Replicate", "表单复制,获取元数据为空。待获取元数据ID是:" + sourceMetadataId); + throw new WebCustomException("表单复制,获取元数据为空。待获取元数据ID是:" + sourceMetadataId); } // 获取待复制元数据所在工程名称 String sourceProjectName = ProjectInformationManager.getProjectName(sourceFormMetadata); if (StringUtility.isNullOrEmpty(sourceProjectName)) { - throw new GSPException("Web_Replicate", "待复制元数据所在工程的工程名为空。待复制元数据ID是:" + sourceMetadataId); + throw new WebCustomException("待复制元数据所在工程的工程名为空。待复制元数据ID是:" + sourceMetadataId); } FormMetadataReplicator formMetadataReplicator = new FormMetadataReplicator(); diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java index 4b5980ca..3b377892 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectCompiler.java @@ -19,7 +19,7 @@ package com.inspur.edp.web.frontendproject; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.api.entity.MetadataCompilerContext; import com.inspur.edp.lcm.metadata.spi.MetadataCompileAction; -import com.inspur.edp.web.common.GSPException; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.entity.TerminalType; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.logger.WebLogger; @@ -54,7 +54,7 @@ public class FrontendProjectCompiler implements MetadataCompileAction { public void metadataCompile(MetadataCompilerContext context) { if (context == null || StringUtility.isNullOrEmpty(context.getProjectPath())) { log.error("the Project Path is Empty When Compiling a Project"); - throw new GSPException("MetadataCompile", "the Project Path is Empty "); + throw new WebCustomException("the Project Path is Empty "); } WebLogger.Instance.info("begin compile frontend project", FrontendProjectCompiler.class.getName()); generateAndCompileFrontendProject(context); diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectDeployer.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectDeployer.java index e240474b..bbf66426 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectDeployer.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectDeployer.java @@ -22,11 +22,11 @@ import com.inspur.edp.lcm.metadata.api.entity.ExtractContext; import com.inspur.edp.lcm.metadata.api.entity.GspProject; import com.inspur.edp.lcm.metadata.api.service.PackageGenerateService; import com.inspur.edp.lcm.metadata.api.service.ProjectExtendService; -import com.inspur.edp.web.common.GspProjectUtil; import com.inspur.edp.web.common.constant.FrontendProjectConstant; import com.inspur.edp.web.common.entity.TerminalType; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.logger.WebLogger; +import com.inspur.edp.web.common.metadata.GspProjectUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.frontendproject.webservice.FormDynamicParameter; import com.inspur.edp.web.jitengine.dynamicform.DynamicFormMetaFileNameGenerator; @@ -48,7 +48,7 @@ public class FrontendProjectDeployer { if (StringUtility.isNullOrEmpty(projectPath)) { return; } - String projectName = GspProjectUtil.getProjectName(projectPath); + String projectName = GspProjectUtility.getProjectName(projectPath); // 部署PC deploy(projectPath, projectName, TerminalType.PC, false); //部署mobile @@ -67,7 +67,7 @@ public class FrontendProjectDeployer { if (StringUtility.isNullOrEmpty(projectPath)) { return; } - String projectName = GspProjectUtil.getProjectName(projectPath); + String projectName = GspProjectUtility.getProjectName(projectPath); boolean isUseSingleForm = jieXiParameter != null && jieXiParameter.isUseSingleForm(); // 部署前端交付物至目标publish目录 @@ -155,7 +155,7 @@ public class FrontendProjectDeployer { */ private void deployToPublish(String projectPath) { try { - GspProject projectInfo = GspProjectUtil.getGspProject(projectPath); + GspProject projectInfo = GspProjectUtility.getProjectInformation(projectPath); String projectName = projectInfo.getMetadataProjectName(); // 移除工程名后的路径 projectPath = projectPath.substring(0, projectPath.toLowerCase().lastIndexOf(projectName.toLowerCase()) + projectName.length()); @@ -176,7 +176,7 @@ public class FrontendProjectDeployer { // 获取默认的部署环境信息 DebuggerService debuggerService = SpringBeanUtils.getBean(DebuggerService.class); Deployment defaultDebuggerDeployment = debuggerService.getDefaultDebugServerStatus(); - GspProject projectInfo = GspProjectUtil.getGspProject(projectPath); + GspProject projectInfo = GspProjectUtility.getProjectInformation(projectPath); String serverDeployPath = getDeployServerPath(defaultDebuggerDeployment); @@ -214,7 +214,7 @@ public class FrontendProjectDeployer { return; } - String projectName = GspProjectUtil.getProjectName(projectPath); + String projectName = GspProjectUtility.getProjectName(projectPath); String ProductPathForBabel = FileUtility.combine(FrontendProjectConstant.FRONTEND_PROJECT_COMPILE_PATH, FrontendProjectConstant.PROJECT_GENERATE_PATH_FOR_BABEL, FrontendProjectConstant.PROJECT_BUILD_PATH); String sourcePath = FileUtility.combine(projectPath, ProductPathForBabel, projectName + "forbabel"); boolean isSourcePathExists = FileUtility.exists(sourcePath); @@ -226,7 +226,7 @@ public class FrontendProjectDeployer { // 获取默认的部署环境信息 DebuggerService debuggerService = SpringBeanUtils.getBean(DebuggerService.class); Deployment defaultDebuggerDeployment = debuggerService.getDefaultDebugServerStatus(); - GspProject projectInfo = GspProjectUtil.getGspProject(projectPath); + GspProject projectInfo = GspProjectUtility.getProjectInformation(projectPath); String deployServerPath = this.getDeployServerPath(defaultDebuggerDeployment); targetBaseDeployPath = FileUtility.combine(deployServerPath, "web", projectInfo.getSuDeploymentPath()); diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectExtractor.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectExtractor.java index 5baabad8..34a340de 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectExtractor.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectExtractor.java @@ -18,10 +18,10 @@ package com.inspur.edp.web.frontendproject; import com.inspur.edp.lcm.metadata.api.entity.ExtractContext; import com.inspur.edp.lcm.metadata.spi.ExtractAction; -import com.inspur.edp.web.common.GspProjectUtil; import com.inspur.edp.web.common.constant.FrontendProjectConstant; import com.inspur.edp.web.common.entity.TerminalType; import com.inspur.edp.web.common.io.FileUtility; +import com.inspur.edp.web.common.metadata.GspProjectUtility; import com.inspur.edp.web.common.utility.StringUtility; import lombok.extern.slf4j.Slf4j; @@ -47,7 +47,7 @@ public class FrontendProjectExtractor implements ExtractAction { return; } // 目录A->(拷贝)->目录B - String projectName = GspProjectUtil.getProjectName(context.getProjectPath()); + String projectName = GspProjectUtility.getProjectName(context.getProjectPath()); extract(context, projectName, TerminalType.PC); extract(context, projectName, TerminalType.MOBILE); diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectService.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectService.java index e0d67144..46f04009 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectService.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectService.java @@ -16,8 +16,8 @@ package com.inspur.edp.web.frontendproject; -import com.inspur.edp.web.common.GSPException; import com.inspur.edp.web.common.constant.FrontendProjectConstant; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.frontendproject.debuguri.FormMetadataDebugUriService; import com.inspur.edp.web.frontendproject.entity.ChosenFormList; @@ -45,7 +45,7 @@ public class FrontendProjectService { private String getProjectType(String projectPath) { if (StringUtility.isNullOrEmpty(projectPath)) { - throw new GSPException("WEB_GetProjectType", "Current Project Path is Null or Empty", null, ExceptionLevel.Warning); + throw new WebCustomException("Current Project Path is Null or Empty", null, ExceptionLevel.Warning); } projectPath = FrontendProjectUtility.getProjectPathWithDevRootPath(projectPath); @@ -54,7 +54,7 @@ public class FrontendProjectService { // 提供基于全路径的接口 return FrontendProjectUtility.getProjectType(projectPath); } catch (RuntimeException exception) { - throw new GSPException("WEB_GetProjectType", String.format("Error When Getting Project Type. Current Project Path is: %1$s", projectPath), exception); + throw new WebCustomException(String.format("Error When Getting Project Type. Current Project Path is: %1$s", projectPath), exception); } } @@ -68,7 +68,7 @@ public class FrontendProjectService { projectPath = FrontendProjectUtility.getProjectPathWithDevRootPath(projectPath); if (StringUtility.isNullOrEmpty(projectPath)) { - throw new GSPException("WEB_ResolveFormMetadatas", "Current Project Path is Null or Empty", null, ExceptionLevel.Warning); + throw new WebCustomException("Current Project Path is Null or Empty", null, ExceptionLevel.Warning); } FormMetadataResolver.resolveFormMetadatas(projectPath, buildFormList); diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectUtility.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectUtility.java index b870d1dc..a43f93b1 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectUtility.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/FrontendProjectUtility.java @@ -18,7 +18,6 @@ package com.inspur.edp.web.frontendproject; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.api.service.MetadataService; -import com.inspur.edp.web.common.GSPException; import com.inspur.edp.web.common.constant.FrontendProjectConstant; import com.inspur.edp.web.common.entity.TerminalType; import com.inspur.edp.web.common.io.FileUtility; @@ -26,8 +25,6 @@ import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.StringUtility; import io.iec.edp.caf.commons.utils.SpringBeanUtils; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; /** @@ -69,7 +66,7 @@ public class FrontendProjectUtility { * 获取工程包含的表单个数 */ public static List getFormMetadataList(String projectPath, TerminalType terminalType) { - return MetadataUtility.getInstance().getMetadataListInProject(projectPath, terminalType.getFormMetadataSuffix()); + return MetadataUtility.getInstance().getMetadataListInProjectWithDesign(projectPath, terminalType.getFormMetadataSuffix()); } /** diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/build/FrontendProjectBuild.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/build/FrontendProjectBuild.java index 19296a95..d18ecc1d 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/build/FrontendProjectBuild.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/build/FrontendProjectBuild.java @@ -16,7 +16,6 @@ package com.inspur.edp.web.frontendproject.build; -import com.inspur.edp.web.common.GSPException; import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.entity.ResultCode; import com.inspur.edp.web.common.entity.ResultMessage; @@ -48,7 +47,7 @@ public class FrontendProjectBuild { FrontendProjectCompiler frontendProjectCompiler = new FrontendProjectCompiler(); frontendProjectCompiler.buildFrontendProject(projectPath, isJieXiForm); } catch (RuntimeException exception) { - throw new GSPException("WEB_BuildFrontendProject", String.format("Error When Building a Frontend. Current Project Path is: %1$s", projectPath), exception); + throw new WebCustomException(String.format("Error When Building a Frontend. Current Project Path is: %1$s", projectPath), exception); } return ResultCode.success(); } @@ -65,7 +64,7 @@ public class FrontendProjectBuild { FrontendProjectCompiler frontendProjectCompiler = new FrontendProjectCompiler(); frontendProjectCompiler.buildFrontendProjectForBabel(projectPath); } catch (RuntimeException exception) { - throw new GSPException("WEB_BuildFrontendProject", String.format("Error When Building a Frontend. Current Project Path is: %1$s", projectPath), exception); + throw new WebCustomException(String.format("Error When Building a Frontend. Current Project Path is: %1$s", projectPath), exception); } } } diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/changedetect/generate/stepexecute/MetadataChangeStepExecuteImpl.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/changedetect/generate/stepexecute/MetadataChangeStepExecuteImpl.java index 42d96503..970ed43c 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/changedetect/generate/stepexecute/MetadataChangeStepExecuteImpl.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/changedetect/generate/stepexecute/MetadataChangeStepExecuteImpl.java @@ -40,7 +40,6 @@ import com.inspur.edp.web.frontendproject.entity.ChosenFormList; import com.inspur.edp.web.frontendproject.metadata.FormMetadataManager; import java.io.File; -import java.io.FileFilter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -191,7 +190,7 @@ public class MetadataChangeStepExecuteImpl extends AbstractGenerateChangeDetectS // 表示通过列表形式获取到的元数据content为空 那么单独进行元数据的读取 MetadataGetterParameter metadataGetterParameter=MetadataGetterParameter.getNewInstance(t.getHeader().getId(), t.getRelativePath()); metadataGetterParameter.setSourceMetadata(t, MetadataTypeEnum.Frm); - t.setContent(MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter).getContent()); + t.setContent(MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter).getContent()); } FormMetadataContent formMetadataContent = (FormMetadataContent) t.getContent(); FormDOM formContent = FormMetadataContentService.getInstance().getFormContent(formMetadataContent); diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/customservice/SourceServicePathGenerator.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/customservice/SourceServicePathGenerator.java index 171296f8..0eb397e4 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/customservice/SourceServicePathGenerator.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/customservice/SourceServicePathGenerator.java @@ -16,12 +16,11 @@ package com.inspur.edp.web.frontendproject.customservice; -import com.inspur.edp.web.common.GSPException; -import com.inspur.edp.web.common.GspProjectUtil; import com.inspur.edp.web.common.constant.FrontendProjectConstant; +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.frontendproject.FrontendProjectUtility; +import com.inspur.edp.web.common.metadata.GspProjectUtility; /** * 自定义代码构件 @@ -58,12 +57,12 @@ public class SourceServicePathGenerator { // 定义解析表单service的部署路径 主要目的是部署解析表单依赖js targetServiceProductPath = projectPath + "/src/" + FrontendProjectConstant.PROJECT_GENERATE_PATH_FOR_Dynamic; } else { - targetServiceProductPath = projectPath + "/src/app/projects/" + GspProjectUtil.getProjectName(projectPath) + "/src/app"; + targetServiceProductPath = projectPath + "/src/app/projects/" + GspProjectUtility.getProjectName(projectPath) + "/src/app"; } } else if (terminalType == TerminalType.MOBILE) { targetServiceProductPath = projectPath + "/src/mobileapp/src/apps"; } else { - throw new GSPException("WEB_GenerateFrontendProject", "暂不支持的终端类型:" + terminalType + "。请联系管理员处理。"); + throw new WebCustomException("暂不支持的终端类型:" + terminalType + "。请联系管理员处理。"); } return targetServiceProductPath; diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/debuguri/AbstractFormMetadataDebugUri.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/debuguri/AbstractFormMetadataDebugUri.java index 07347a48..87b4f4a6 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/debuguri/AbstractFormMetadataDebugUri.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/debuguri/AbstractFormMetadataDebugUri.java @@ -20,6 +20,7 @@ import com.inspur.edp.lcm.metadata.api.entity.MetadataProject; import com.inspur.edp.web.appconfig.api.entity.GspAppConfig; import com.inspur.edp.web.appconfig.core.service.GspAppConfigService; import com.inspur.edp.web.common.entity.TerminalType; +import com.inspur.edp.web.common.metadata.MetadataProjectUtility; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.frontendproject.FrontendProjectUtility; @@ -106,7 +107,7 @@ public abstract class AbstractFormMetadataDebugUri { } protected String getFormMetadataRouteUri(String formMetadataRelativePath, String formMetadataId) { - MetadataProject metadataProject = MetadataUtility.getInstance().getMetadataProjectService().getMetadataProjInfo(formMetadataRelativePath); + MetadataProject metadataProject = MetadataProjectUtility.getMetadataProject(formMetadataRelativePath); return getFormMetadataRouteUriWithoutDevPath(metadataProject.getProjectPath(), formMetadataId); } 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 814ef5d8..24e3f335 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 @@ -19,10 +19,8 @@ package com.inspur.edp.web.frontendproject.debuguri; 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.MetadataProject; -import com.inspur.edp.lcm.metadata.api.service.MetadataProjectService; -import com.inspur.edp.web.common.GspProjectUtil; import com.inspur.edp.web.common.entity.TerminalType; -import com.inspur.edp.web.common.environment.ExecuteEnvironment; +import com.inspur.edp.web.common.metadata.GspProjectUtility; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; @@ -30,8 +28,6 @@ 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.frontendproject.FrontendProjectUtility; -import io.iec.edp.caf.commons.utils.SpringBeanUtils; import java.util.ArrayList; import java.util.HashMap; @@ -56,10 +52,10 @@ public class FormMetadataDebugUriWithMobile extends AbstractFormMetadataDebugUri String defaultPageUri = ""; // 进行元数据的调用借口获取方式调整 - MetadataGetterParameter metadataGetterParameter=MetadataGetterParameter.getNewInstance(formMetadataId,null); - metadataGetterParameter.setTargetMetadataNotFoundMessage("表单调试,获取表单元数据为空,对应元数据id:"+formMetadataId); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(formMetadataId, null); + metadataGetterParameter.setTargetMetadataNotFoundMessage("表单调试,获取表单元数据为空,对应元数据id:" + formMetadataId); - GspMetadata metadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + GspMetadata metadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); FormMetadataContent formMetadataContent = (FormMetadataContent) metadata.getContent(); FormDOM formDom = FormMetadataContentService.getInstance().getFormContent(formMetadataContent); HashMap component = null; @@ -86,9 +82,9 @@ public class FormMetadataDebugUriWithMobile extends AbstractFormMetadataDebugUri // 2. 获取部署路径 MetadataProject metadataProject = MetadataUtility.getInstance().getMetadataProject(formMetadataRelativePath); - GspProject gspProject = GspProjectUtil.getGspProject(metadataProject.getProjectPath()); + GspProject gspProject = GspProjectUtility.getProjectInformation(metadataProject.getProjectPath()); - String projectName = GspProjectUtil.getProjectName(gspProject); + String projectName = GspProjectUtility.getProjectName(gspProject); return "/" + gspProject.getSuDeploymentPath().toLowerCase() + "/" + TerminalType.MOBILE.getPublishPathName() + "/" + projectName + "/" + "index.html" + "#" + "/" + formRouteUri + "/" + defaultPageUri; } diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/debuguri/FormMetadataDebugUriWithPC.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/debuguri/FormMetadataDebugUriWithPC.java index f693824f..25e50d4f 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/debuguri/FormMetadataDebugUriWithPC.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/debuguri/FormMetadataDebugUriWithPC.java @@ -18,8 +18,8 @@ package com.inspur.edp.web.frontendproject.debuguri; import com.inspur.edp.lcm.metadata.api.entity.GspProject; import com.inspur.edp.lcm.metadata.api.entity.MetadataProject; -import com.inspur.edp.web.common.GspProjectUtil; import com.inspur.edp.web.common.entity.TerminalType; +import com.inspur.edp.web.common.metadata.GspProjectUtility; import com.inspur.edp.web.common.metadata.MetadataUtility; /** @@ -40,10 +40,10 @@ public class FormMetadataDebugUriWithPC extends AbstractFormMetadataDebugUri { // 2. 获取部署路径 MetadataProject metadataProject = MetadataUtility.getInstance().getMetadataProject(formMetadataRelativePath); - GspProject gspProject = GspProjectUtil.getGspProject(metadataProject.getProjectPath()); + GspProject gspProject = GspProjectUtility.getProjectInformation(metadataProject.getProjectPath()); String deploymentPath = "/" + gspProject.getSuDeploymentPath().toLowerCase(); - String projectName = GspProjectUtil.getProjectName(gspProject); + String projectName = GspProjectUtility.getProjectName(gspProject); return deploymentPath + "/" + TerminalType.PC.getPublishPathName() + "/" + projectName + "/" + "index.html" + "#" + routeUri; } diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/deploy/FrontendProjectDeploy.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/deploy/FrontendProjectDeploy.java index f8dc8348..2f8bf0c7 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/deploy/FrontendProjectDeploy.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/deploy/FrontendProjectDeploy.java @@ -16,7 +16,7 @@ package com.inspur.edp.web.frontendproject.deploy; -import com.inspur.edp.web.common.GSPException; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.frontendproject.FrontendProjectDeployer; import com.inspur.edp.web.frontendproject.FrontendProjectUtility; @@ -33,14 +33,14 @@ public class FrontendProjectDeploy { projectPath = FrontendProjectUtility.getProjectPathWithDevRootPath(projectPath); if (StringUtility.isNullOrEmpty(projectPath)) { - throw new GSPException("WEB_DeployFrontendProject", "Current Project Path is Null or Empty", null, ExceptionLevel.Warning); + throw new WebCustomException("Current Project Path is Null or Empty", null, ExceptionLevel.Warning); } try { FrontendProjectDeployer frontendProjectDeployer = new FrontendProjectDeployer(); frontendProjectDeployer.deploy(projectPath); } catch (RuntimeException exception) { - throw new GSPException("WEB_DeployFrontendProject", String.format("Error When Deploying a Frontend. Current Project Path is: %1$s", projectPath), exception); + throw new WebCustomException(String.format("Error When Deploying a Frontend. Current Project Path is: %1$s", projectPath), exception); } } @@ -53,33 +53,34 @@ public class FrontendProjectDeploy { String projectPath = FrontendProjectUtility.getProjectPathWithDevRootPath(dynamicParameter.getProjectPath()); if (StringUtility.isNullOrEmpty(projectPath)) { - throw new GSPException("WEB_DeployFrontendProject", "Current Project Path is Null or Empty", null, ExceptionLevel.Warning); + throw new WebCustomException("Current Project Path is Null or Empty", null, ExceptionLevel.Warning); } try { FrontendProjectDeployer frontendProjectDeployer = new FrontendProjectDeployer(); frontendProjectDeployer.deployForJieXi(projectPath, dynamicParameter); } catch (RuntimeException exception) { - throw new GSPException("WEB_DeployFrontendProject", String.format("Error When Deploying a Frontend. Current Project Path is: %1$s", projectPath), exception); + throw new WebCustomException(String.format("Error When Deploying a Frontend. Current Project Path is: %1$s", projectPath), exception); } } /** * babel 表单的部署 + * * @param projectPath */ public static void deployFrontendProjectForBabel(String projectPath) { projectPath = FrontendProjectUtility.getProjectPathWithDevRootPath(projectPath); if (StringUtility.isNullOrEmpty(projectPath)) { - throw new GSPException("WEB_DeployFrontendProject", "Current Project Path is Null or Empty", null, ExceptionLevel.Warning); + throw new WebCustomException("Current Project Path is Null or Empty", null, ExceptionLevel.Warning); } try { FrontendProjectDeployer frontendProjectDeployer = new FrontendProjectDeployer(); frontendProjectDeployer.deployForBabel(projectPath); } catch (RuntimeException exception) { - throw new GSPException("WEB_DeployFrontendProject", String.format("Error When Deploying a Frontend. Current Project Path is: %1$s", projectPath), exception); + throw new WebCustomException(String.format("Error When Deploying a Frontend. Current Project Path is: %1$s", projectPath), exception); } } } diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/formdynamic/FormDynamicParameterValidator.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/formdynamic/FormDynamicParameterValidator.java index 55c2a44f..fbc440f0 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/formdynamic/FormDynamicParameterValidator.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/formdynamic/FormDynamicParameterValidator.java @@ -16,7 +16,7 @@ package com.inspur.edp.web.frontendproject.formdynamic; -import com.inspur.edp.web.common.GSPException; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.frontendproject.webservice.FormDynamicParameter; @@ -29,16 +29,16 @@ public class FormDynamicParameterValidator { public static void validate(FormDynamicParameter dynamicParameter) { if (StringUtility.isNullOrEmpty(dynamicParameter.getProjectPath())) { - throw new GSPException("", "表单解析工程路径不能为空,请设置!"); + throw new WebCustomException("表单解析工程路径不能为空,请设置!"); } if (dynamicParameter.isUseSingleForm() && StringUtility.isNullOrEmpty(dynamicParameter.getFormCode())) { - throw new GSPException("10001", "已启用单个表单解析,请设置表单编号"); + throw new WebCustomException("已启用单个表单解析,请设置表单编号"); } // 如果不是单表单解析 且设置了formCode if (!dynamicParameter.isUseSingleForm() && !StringUtility.isNullOrEmpty(dynamicParameter.getFormCode())) { - throw new GSPException("10001", "使用工程级别表单解析,请勿设置表单编号"); + throw new WebCustomException("使用工程级别表单解析,请勿设置表单编号"); } } } diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/generate/FrontendProjectGenerate.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/generate/FrontendProjectGenerate.java index dcb31e1f..65f1e667 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/generate/FrontendProjectGenerate.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/generate/FrontendProjectGenerate.java @@ -16,12 +16,12 @@ package com.inspur.edp.web.frontendproject.generate; -import com.inspur.edp.web.common.GSPException; -import com.inspur.edp.web.common.GspProjectUtil; import com.inspur.edp.web.common.constant.FrontendProjectConstant; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.entity.TerminalType; import com.inspur.edp.web.common.environment.EnvironmentException; import com.inspur.edp.web.common.io.FileUtility; +import com.inspur.edp.web.common.metadata.GspProjectUtility; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.frontendproject.FrontendProjectUtility; @@ -48,7 +48,7 @@ public class FrontendProjectGenerate { String projectPath = FrontendProjectUtility.getProjectPathWithDevRootPath(generateParameter.getProjectPath()); if (StringUtility.isNullOrEmpty(projectPath)) { - throw new GSPException("WEB_ResovleFrontendProject", "Current Project Path is Null or Empty", null, ExceptionLevel.Warning); + throw new WebCustomException("Current Project Path is Null or Empty", null, ExceptionLevel.Warning); } // 调整工程路径参数 generateParameter.setProjectPath(projectPath); @@ -63,9 +63,9 @@ public class FrontendProjectGenerate { generateFrontendProject(generateParameter, TerminalType.MOBILE); } } catch (EnvironmentException ex) { - throw new GSPException("WEB_ResovleFrontendProject", ex.getMessage(), ex); + throw new WebCustomException(ex.getMessage(), ex); } catch (RuntimeException exception) { - throw new GSPException("WEB_ResovleFrontendProject", String.format("Error When Generating a Frontend Project. Current Project Path is: %1$s。%2$s", projectPath, exception.getMessage()), exception); + throw new WebCustomException(String.format("Error When Generating a Frontend Project. Current Project Path is: %1$s。%2$s", projectPath, exception.getMessage()), exception); } } @@ -100,7 +100,7 @@ public class FrontendProjectGenerate { projectPath = FrontendProjectUtility.getProjectPathWithDevRootPath(projectPath); if (StringUtility.isNullOrEmpty(projectPath)) { - throw new GSPException("WEB_ResovleFrontendProject", "Current Project Path is Null or Empty", null, ExceptionLevel.Warning); + throw new WebCustomException("Current Project Path is Null or Empty", null, ExceptionLevel.Warning); } try { @@ -108,7 +108,7 @@ public class FrontendProjectGenerate { JITEngineManager.generateFrontendProjectForBabel(projectPath); // 生成后动作 - String babelProjectName = GspProjectUtil.getProjectName(projectPath) + "forbabel"; + String babelProjectName = GspProjectUtility.getProjectName(projectPath) + "forbabel"; String targetServiceProductPath = projectPath + "/src" + "/" + FrontendProjectConstant.PROJECT_GENERATE_PATH_FOR_BABEL + "/projects" + "/" + babelProjectName + "/src/app"; String sourceServiceProductPath = java.nio.file.Paths.get(projectPath).resolve(TerminalType.PC.getServiceRelativePath()).toString(); boolean isPathExists = FileUtility.exists(sourceServiceProductPath); @@ -116,9 +116,9 @@ public class FrontendProjectGenerate { FileUtility.copyFolder(sourceServiceProductPath, targetServiceProductPath); } } catch (EnvironmentException ex) { - throw new GSPException("WEB_ResovleFrontendProject", ex.getMessage(), ex); + throw new WebCustomException(ex.getMessage(), ex); } catch (RuntimeException exception) { - throw new GSPException("WEB_ResovleFrontendProject", String.format("Error When Generating a Frontend Project. Current Project Path is: %1$s。 %2$s", projectPath, exception.getMessage()), exception); + throw new WebCustomException(String.format("Error When Generating a Frontend Project. Current Project Path is: %1$s。 %2$s", projectPath, exception.getMessage()), exception); } } } diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/pageflow/PageFlowMetadataManager.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/pageflow/PageFlowMetadataManager.java index b877fcdd..b6071402 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/pageflow/PageFlowMetadataManager.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/pageflow/PageFlowMetadataManager.java @@ -21,12 +21,12 @@ import com.inspur.edp.lcm.metadata.api.exception.MetadataNotFoundException; 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.GSPException; -import com.inspur.edp.web.common.GspProjectUtil; import com.inspur.edp.web.common.JITEngineConstants; +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.logger.WebLogger; +import com.inspur.edp.web.common.metadata.GspProjectUtility; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.StringUtility; @@ -116,7 +116,7 @@ public class PageFlowMetadataManager { * @param terminalType */ public static void saveRouteMetadata(PageFlowMetadataEntity pageFlowMetadataEntity, String targetStorageBasePath, TerminalType terminalType) { - String projectName = GspProjectUtil.getProjectName(targetStorageBasePath); + String projectName = GspProjectUtility.getProjectName(targetStorageBasePath); AdaptedPageFlowMetadataEntity adaptedPageFlowMetadataEntity = AdaptedPageFlowMetadataEntityService.generateAdaptedPageFlowMetadataEntity(pageFlowMetadataEntity); String metadataContent = AdaptedPageFlowMetadataEntityService.serialize(adaptedPageFlowMetadataEntity); @@ -141,7 +141,7 @@ public class PageFlowMetadataManager { } break; default: - throw new GSPException("Web_CheckIfStoragePageFlowId", "未识别的终端类型,请联系管理员处理。当前终端类型是:" + terminalType); + throw new WebCustomException("未识别的终端类型,请联系管理员处理。当前终端类型是:" + terminalType); } return alreadyStoragedPageFlowId; } @@ -181,14 +181,14 @@ public class PageFlowMetadataManager { pageFlowMetadataID = appConfigInfo.getMobilePageFlowMetadataID(); break; default: - throw new GSPException("Web_GetPageFlowMetadata", "未识别的终端类型,请联系管理员处理。当前终端类型是:" + terminalType); + throw new WebCustomException("未识别的终端类型,请联系管理员处理。当前终端类型是:" + terminalType); } // 判断元数据是否存在 try { MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(pageFlowMetadataID, projectPath); metadataGetterParameter.setTargetMetadataNotFoundMessage("找不到页面流元数据,请检查对应app.config.json文件中配置页面流元数据id是否正确或页面流元数据是否被移除。"); - GspMetadata pageFlowMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + GspMetadata pageFlowMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); return pageFlowMetadata; } catch (MetadataNotFoundException ex) { // 如果捕获到元数据找不到异常 那么重新进行元数据的创建 diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/webservice/FrontendProjectWebServiceImpl.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/webservice/FrontendProjectWebServiceImpl.java index b8ba3c8b..9e803889 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/webservice/FrontendProjectWebServiceImpl.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/webservice/FrontendProjectWebServiceImpl.java @@ -16,7 +16,7 @@ package com.inspur.edp.web.frontendproject.webservice; -import com.inspur.edp.web.common.GSPException; +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.utility.StringUtility; @@ -56,7 +56,7 @@ public class FrontendProjectWebServiceImpl implements FrontendProjectWebService public ResultMessage buildFrontendProject(String projectPath) { try { return FrontendProjectBuild.buildFrontendProject(projectPath, false); - } catch (GSPException ex) { + } catch (WebCustomException ex) { if (ex.getCause() != null && ex.getCause() instanceof RuntimeException) { RuntimeException causeException = (RuntimeException) ex.getCause(); return ResultCode.failure(causeException.getMessage()); @@ -77,7 +77,7 @@ public class FrontendProjectWebServiceImpl implements FrontendProjectWebService try { return FrontendProjectManager.getInstance().resolveAndGenerateAndBuildFrontendProject(projectPath); } catch (Exception ex) { - if (ex instanceof GSPException) { + if (ex instanceof WebCustomException) { if (ex.getCause() != null && ex.getCause() instanceof RuntimeException) { RuntimeException causeException = (RuntimeException) ex.getCause(); return ResultCode.failure(causeException.getMessage()); @@ -120,7 +120,7 @@ public class FrontendProjectWebServiceImpl implements FrontendProjectWebService public ResultMessage generateFrontendProjectWithDynamic(FormDynamicParameter dynamicParameter) { try { return FrontendProjectManager.getInstance().resolveAndGenerateFrontendProjectWithDynamic(dynamicParameter); - } catch (GSPException ex) { + } catch (WebCustomException ex) { if (ex.getCause() instanceof RuntimeException) { RuntimeException causeException = (RuntimeException) ex.getCause(); return ResultCode.failure(causeException.getMessage()); diff --git a/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/NodeModulesPathGenerator.java b/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/NodeModulesPathGenerator.java index 28bb2304..622233c0 100644 --- a/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/NodeModulesPathGenerator.java +++ b/web-npmpackage-core/src/main/java/com/inspur/edp/web/npmpackage/core/npminstall/NodeModulesPathGenerator.java @@ -59,8 +59,6 @@ public class NodeModulesPathGenerator { if (executeEnvironment.equals(ExecuteEnvironment.Runtime)) { String relativePath = FileUtility.combine("web", "runtime", "projects"); - // 移除移动单独的node_modules 文件目录 - //relativePath = npmInstallParameter.isMobile() ? FileUtility.combine(relativePath, "mobile") : relativePath; // 获取到运行时定制下node_modules path parentNode_modulesPath = FileUtility.combine(currentWorkPath, relativePath); } @@ -76,8 +74,6 @@ public class NodeModulesPathGenerator { // 如果是部署工具 if (executeEnvironment.equals(ExecuteEnvironment.UpgradeTool)) { String relativePath = FileUtility.combine("web", "runtime", "projects"); - // 移除移动独立的node_modules - //relativePath = npmInstallParameter.isMobile() ? FileUtility.combine(relativePath, "mobile") : relativePath; // 获取到元数据部署工具下node_modules path parentNode_modulesPath = FileUtility.combine(currentWorkPath, relativePath); } diff --git a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java index e291729d..42f20232 100644 --- a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java +++ b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/PageFlowMetadataUpdateService.java @@ -25,9 +25,9 @@ import com.inspur.edp.lcm.metadata.api.service.MetadataService; import com.inspur.edp.lcm.metadata.spi.event.MetadataEventArgs; import com.inspur.edp.web.appconfig.api.entity.GspAppConfig; import com.inspur.edp.web.appconfig.core.service.GspAppConfigService; -import com.inspur.edp.web.common.GspProjectUtil; import com.inspur.edp.web.common.entity.TerminalType; import com.inspur.edp.web.common.io.FileUtility; +import com.inspur.edp.web.common.metadata.GspProjectUtility; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.pageflow.metadata.entity.Page; @@ -109,13 +109,13 @@ public class PageFlowMetadataUpdateService { PageFlowMetadataEntity pageFlowMetadataEntity; String projectPath = MetadataUtility.getInstance().getMetadataProjectPath(metadataEventArgs.getMetadata().getRelativePath()); - if(TerminalType.MOBILE.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType())){ + if (TerminalType.MOBILE.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType())) { pageFlowMetadataEntity = RouteMetataService.getRouteMetadataContentWithMetadataIdAndProjectPath(appConfigInfo.getMobilePageFlowMetadataID(), appConfigInfo.getMobilePageFlowMetadataFileName(), projectPath); if (pageFlowMetadataEntity == null) { log.debug(String.format("Current Project %1$s's PageFlowMetadata %2$s Content is Null.", metadataEventArgs.getMetadata().getRelativePath(), appConfigInfo.getPageFlowMetadataFileName())); return; } - }else{ + } else { pageFlowMetadataEntity = RouteMetataService.getRouteMetadataContentWithMetadataIdAndProjectPath(appConfigInfo.getPageFlowMetadataID(), appConfigInfo.getPageFlowMetadataFileName(), projectPath); if (pageFlowMetadataEntity == null) { log.debug(String.format("Current Project %1$s's PageFlowMetadata %2$s Content is Null.", metadataEventArgs.getMetadata().getRelativePath(), appConfigInfo.getPageFlowMetadataFileName())); @@ -124,7 +124,6 @@ public class PageFlowMetadataUpdateService { } - // (2) 从页面流中同步删除该表单元数据的记录 log.debug("Current PageFlowMetadataEntity Pages Number is:" + pageFlowMetadataEntity.getPages().length); Page[] updatePages = null; @@ -153,10 +152,10 @@ public class PageFlowMetadataUpdateService { } // (3) 更新页面流元数据 - if(TerminalType.MOBILE.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType())){ + if (TerminalType.MOBILE.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType())) { RouteMetataService.saveRouteMetadataContent(pageFlowMetadataEntity, appConfigInfo.getMobilePageFlowMetadataID(), metadataEventArgs.getMetadata().getRelativePath()); - }else{ + } else { RouteMetataService.saveRouteMetadataContent(pageFlowMetadataEntity, appConfigInfo.getPageFlowMetadataID(), metadataEventArgs.getMetadata().getRelativePath()); } @@ -305,9 +304,9 @@ public class PageFlowMetadataUpdateService { localPageFlowMetadataEntity.setId(pageFlowMetadataEntityId); // (2) 创建project属性 localPageFlowMetadataEntity.setProject(new Project()); - localPageFlowMetadataEntity.getProject().setName(MetadataUtility.getInstance().getProjectName(projectPath)); + localPageFlowMetadataEntity.getProject().setName(GspProjectUtility.getProjectName(projectPath)); // (3) 获取当前工程的所有表单元数据 - List formMetataList = MetadataUtility.getInstance().getMetadataListInProject(projectPath, metadataSuffix); + List formMetataList = MetadataUtility.getInstance().getMetadataListInProjectWithDesign(projectPath, metadataSuffix); // (4) 将表单元数据填充到页面流元数据中 localPageFlowMetadataEntity.setPages((Page[]) java.lang.reflect.Array.newInstance(Page.class, formMetataList.size())); @@ -363,7 +362,7 @@ public class PageFlowMetadataUpdateService { GspMetadata routeMetadata = new GspMetadata(); routeMetadata.setHeader(new MetadataHeader()); - GspProject gspProject = GspProjectUtil.getGspProject(projectPath); + GspProject gspProject = GspProjectUtility.getProjectInformation(projectPath); routeMetadata.getHeader().setNameSpace(gspProject.getProjectNameSpace()); routeMetadata.getHeader().setBizobjectID(gspProject.getBizobjectID()); diff --git a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/RouteMetataService.java b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/RouteMetataService.java index 503470d4..738bf0f1 100644 --- a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/RouteMetataService.java +++ b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/RouteMetataService.java @@ -18,7 +18,7 @@ package com.inspur.edp.web.pageflow.metadata.service; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.api.service.MetadataService; -import com.inspur.edp.web.common.GSPException; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; import com.inspur.edp.web.common.metadata.MetadataUtility; @@ -47,13 +47,13 @@ public class RouteMetataService { } // 如果对应元数据不存在 - if (!StringUtility.isNullOrEmpty(routeMetadataFileName) && !MetadataUtility.getInstance().isMetaDataExistsWithMetadataIDAndPath(projectPath, routeMetadataId)) { + if (!StringUtility.isNullOrEmpty(routeMetadataFileName) && !MetadataUtility.getInstance().isMetaDataExistsWithMetadataIDAndPathWithDesign(projectPath, routeMetadataId)) { return null; } MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(routeMetadataId, projectPath); metadataGetterParameter.setTargetMetadataNotFoundMessage("获取页面流元数据为空,请检查页面流元数据是否被删除或app.config.json中页面流定义是否正确"); - GspMetadata routeMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + GspMetadata routeMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (routeMetadata == null) { return null; } @@ -75,7 +75,7 @@ public class RouteMetataService { MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(routeMetadataId, projectPath); metadataGetterParameter.setTargetMetadataNotFoundMessage("获取页面流元数据为空,请检查页面流元数据是否存在或app.config.json中页面流定义是否正确"); - GspMetadata routeMetadata = MetadataUtility.getInstance().getMetadataInDesign(metadataGetterParameter); + GspMetadata routeMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (routeMetadata == null) { log.debug("Save Route Metadata Content Operation is Stopped Because Target Route Metadata is NULL."); return; @@ -96,7 +96,7 @@ public class RouteMetataService { */ public static String getcurrentpagerouteuri(PageFlowMetadataEntity pageFlowMetadataEntity, String pageId) { if (pageFlowMetadataEntity == null || StringUtility.isNullOrEmpty(pageId)) { - throw new GSPException("WEB_GetCurrentPageRouteUri", "Current Route Metadata Content is Null or the Page id is Nulll or Empty.", null, ExceptionLevel.Warning); + throw new WebCustomException("Current Route Metadata Content is Null or the Page id is Nulll or Empty.", null, ExceptionLevel.Warning); } return PageFlowMetadataEntityManager.getPageRouteUri(pageFlowMetadataEntity, pageId); diff --git a/web-sourcecode-metadata/src/main/java/com/inspur/edp/web/sourcecode/metadata/listener/SourceCodeMetadataEventListener.java b/web-sourcecode-metadata/src/main/java/com/inspur/edp/web/sourcecode/metadata/listener/SourceCodeMetadataEventListener.java index 6f48643e..22dc6bea 100644 --- a/web-sourcecode-metadata/src/main/java/com/inspur/edp/web/sourcecode/metadata/listener/SourceCodeMetadataEventListener.java +++ b/web-sourcecode-metadata/src/main/java/com/inspur/edp/web/sourcecode/metadata/listener/SourceCodeMetadataEventListener.java @@ -19,7 +19,7 @@ package com.inspur.edp.web.sourcecode.metadata.listener; import com.inspur.edp.lcm.metadata.api.entity.GspProject; import com.inspur.edp.lcm.metadata.spi.event.MetadataEventArgs; import com.inspur.edp.lcm.metadata.spi.event.MetadataEventListener; -import com.inspur.edp.web.common.GspProjectUtil; +import com.inspur.edp.web.common.metadata.GspProjectUtility; import com.inspur.edp.web.sourcecode.metadata.entity.SourceCodeMetadataEntity; import com.inspur.edp.web.sourcecode.metadata.utility.SourceCodeMetadataUtility; import io.iec.edp.caf.commons.exception.CAFRuntimeException; @@ -34,10 +34,8 @@ public class SourceCodeMetadataEventListener implements MetadataEventListener { public void fireMetadataSavingEvent(MetadataEventArgs e) { if (e.getMetadata() != null && e.getMetadata().getContent() != null && e.getMetadata().getContent() instanceof SourceCodeMetadataEntity) { String path = e.getMetadata().getRelativePath(); - GspProject project = GspProjectUtil.getGspProject(path); - if (project == null) { - throw new CAFRuntimeException("", "NoFrontendProjectFound", "找不到前端工程,参考路径是" + path, null); - } + GspProject project = GspProjectUtility.getProjectInformation(path); + String projectName = project.getMetadataProjectName(); SourceCodeMetadataEntity sourceCodeMetadataEntity = (SourceCodeMetadataEntity) e.getMetadata().getContent(); -- Gitee From d0ff4e875683c397356cb866b53aa1df71899331 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Tue, 11 Apr 2023 16:29:18 +0800 Subject: [PATCH 27/31] =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FrmJsonFileGenerator.java | 22 +- .../metadata/MetadataGetterParameter.java | 190 ++++++++++++------ .../web/common/metadata/MetadataTypeEnum.java | 85 ++++++++ .../web/common/metadata/MetadataUtility.java | 79 ++++++-- .../metadata/MetadataUtilityWithDesign.java | 2 +- .../web/common/metadata/WebMetadataUri.java | 15 +- .../designschema/generator/FieldBuilder.java | 9 +- .../generator/FieldTypeBuilder.java | 3 +- .../synchronization/FormMetadataUpdate.java | 3 +- .../DynamicCreateFormMetadataServiceImpl.java | 3 +- .../edp/web/jitengine/JITEngineManager.java | 15 +- .../metadataanalysis/CommandsAnalysis.java | 9 +- .../metadatamanager/BaseMetaDataManager.java | 43 +++- .../CommandServiceManager.java | 10 +- .../CommandsMetadataManager.java | 9 +- .../ComponentMetadataManager.java | 9 +- .../metadatamanager/EapiMetadataManager.java | 18 +- .../metadatamanager/FormMetadataManager.java | 18 +- .../StateMachineMetadataManager.java | 9 +- .../sourcecode/SourceCodeInFormManager.java | 9 +- .../event/FormMetadataSaveEventListener.java | 5 +- .../event/WebCommandMetadataDelete.java | 7 +- .../replication/FormMetadataCmdManager.java | 2 +- .../replication/FormMetadataSmManager.java | 2 +- .../replication/FormMetadataVoManager.java | 2 +- .../service/FormMetadataRTService.java | 2 +- .../service/FormMetataService.java | 3 +- .../MetadataChangeStepExecuteImpl.java | 10 +- .../FormMetadataDebugUriWithMobile.java | 3 +- .../pageflow/PageFlowMetadataManager.java | 3 +- .../metadata/service/RouteMetataService.java | 5 +- 31 files changed, 470 insertions(+), 134 deletions(-) diff --git a/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java b/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java index cfb83e7b..305165bc 100644 --- a/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java +++ b/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java @@ -22,6 +22,8 @@ import com.inspur.edp.lcm.metadata.api.entity.*; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.logger.WebLogger; +import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.common.utility.StringUtility; @@ -131,7 +133,12 @@ public class FrmJsonFileGenerator extends AbstractFormJsonFileGenerator implemen List resourceList = new ArrayList<>(); refList.forEach(MetadataReference -> { if (MetadataReference.getDependentMetadata().getType().equals("ResourceMetadata")) { - GspMetadata refMetadata = MetadataUtility.getInstance().getMetadataWithEnvironment(MetadataReference.getDependentMetadata().getId(), this.getExecuteEnvironment(), this.isUpdradeTool()); + GspMetadata refMetadata = MetadataUtility.getInstance().getMetadataWithEnvironment(() -> { + MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); + getterMetadataInfo.setId(MetadataReference.getDependentMetadata().getId()); + getterMetadataInfo.setMetadataType(MetadataTypeEnum.Resource); + return getterMetadataInfo; + }, null, this.getExecuteEnvironment(), this.isUpdradeTool()); ResourceMetadata resourceMetadata = (refMetadata == null || refMetadata.getContent() == null) ? null : ((ResourceMetadata) refMetadata.getContent()); I18nResource item = ConvertToI18nResource(resourceMetadata, resourceMetadata.getOriginalLanguage()); resourceList.add(item); @@ -242,7 +249,18 @@ public class FrmJsonFileGenerator extends AbstractFormJsonFileGenerator implemen /// 表单service文件路径 String externalFormServicePath = FileUtility.combine(formServicePath, json.getModule().getCode().toLowerCase(), "externalcomponents", externalVisualDom.getExternalComponentPath()); String metaFileName = externalVisualDom.getJson().getModule().getCode() + ".frm"; - GspMetadata formMetadata = MetadataUtility.getInstance().getMetadataWithEnvironment(externalVisualDom.getExternalComponentUri(), this.getExecuteEnvironment(), this.isUpdradeTool()); + GspMetadata formMetadata = MetadataUtility.getInstance().getMetadataWithEnvironment(() -> { + MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); + getterMetadataInfo.setId(externalVisualDom.getExternalComponentUri()); + getterMetadataInfo.setMetadataType(MetadataTypeEnum.Frm); + return getterMetadataInfo; + }, () -> { + MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); + getterMetadataInfo.setMetadataType(MetadataTypeEnum.Frm); + getterMetadataInfo.setCode(json.getModule().getCode()); + getterMetadataInfo.setName(json.getModule().getName()); + return getterMetadataInfo; + }, this.getExecuteEnvironment(), this.isUpdradeTool()); String[] params = {externalVisualDom.getExternalComponentPath(), externalVisualDom.getJson().getModule().getCode()}; diff --git a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataGetterParameter.java b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataGetterParameter.java index 45f51660..15333d4d 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataGetterParameter.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataGetterParameter.java @@ -17,92 +17,78 @@ package com.inspur.edp.web.common.metadata; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; +import com.inspur.edp.web.common.customexception.WebCustomException; import lombok.Data; import lombok.Getter; import lombok.Setter; +import java.io.Serializable; + /** * 元数据获取请求参数 + * * @author noah */ -public class MetadataGetterParameter { - private MetadataGetterParameter(String targetMetadataId, String spacePath) { - this.targetMetadataId = targetMetadataId; - this.targetMetadataSpacePath = spacePath; - } +public class MetadataGetterParameter implements Serializable { + private static final long serialVersionUID = 523654455L; /** - * 构造对应的参数实例 - * - * @param targetMetadataId - * @param spacePath - * @return - */ - public static MetadataGetterParameter getNewInstance(String targetMetadataId, String spacePath) { - return new MetadataGetterParameter(targetMetadataId, spacePath); - } - - /** - * 引用目标元数据的元数据id + * 请求参数 源 元数据信息 */ @Getter @Setter - private String sourceMetadataId; + private GetterMetadataInfo sourceMetadataInfo; /** - * 引用目标元数据的元数据code + * 请求参数 目标 元数据信息 */ @Getter @Setter - private String sourceMetadataCode; + private GetterMetadataInfo targetMetadataInfo; - /** - * 源数据 元数据类型 - */ - @Getter - @Setter - private MetadataTypeEnum sourceMetadataType = MetadataTypeEnum.Frm; /** - * 引用目标元数据的元数据path + * 元数据找不到自定义异常提示 应对的是sourceMetadataCode */ @Getter @Setter - private String sourceMetadataPath; + private String targetMetadataNotFoundMessage; - /** - * 源metadata nameSpace - */ - @Getter - @Setter - private String sourceMetadataNameSpace; + private MetadataGetterParameter(String targetMetadataId, String spacePath, MetadataTypeEnum metadataType) { + this(); - /** - * 目标元数据的元数据uri - */ - @Getter - private String targetMetadataId; + this.targetMetadataInfo.setId(targetMetadataId); + this.targetMetadataInfo.setNameSpace(spacePath); + this.targetMetadataInfo.setMetadataType(metadataType); + } + + private MetadataGetterParameter() { + this.sourceMetadataInfo = new GetterMetadataInfo(); + this.targetMetadataInfo = new GetterMetadataInfo(); + } - /** - * 目标元数据 类型 - */ - @Getter - @Setter - private MetadataTypeEnum targetMetadataType; /** - * 目标元数据的 path + * 构造对应的参数实例 + * + * @param targetMetadataId 目标元数据id + * @param spacePath 目标元数据spacePath + * @param metadataType 目标元数据的元数据类型 + * @return */ - @Getter - private String targetMetadataSpacePath; + public static MetadataGetterParameter getNewInstance(String targetMetadataId, String spacePath, MetadataTypeEnum metadataType) { + return new MetadataGetterParameter(targetMetadataId, spacePath, metadataType); + } /** - * 元数据找不到自定义异常提示 应对的是sourceMetadataCode + * 增加此方法的目的是为了可以直接对请求参数直接赋值 + * + * @return */ - @Getter - @Setter - private String targetMetadataNotFoundMessage; + public static MetadataGetterParameter getNewInstance() { + return new MetadataGetterParameter(); + } /** * 仅包含目标元数据的id @@ -110,7 +96,14 @@ public class MetadataGetterParameter { * @return */ public WebMetadataUri getTargetMetadataUri() { - return new WebMetadataUri(this.getTargetMetadataId()); + if (this.getTargetMetadataInfo() == null) { + throw new WebCustomException("元数据请求参数,目标元数据参数不能为空"); + } + return new WebMetadataUri(this.getTargetMetadataInfo().getId(), + this.getTargetMetadataInfo().getCode(), + this.getTargetMetadataInfo().getName(), + this.getTargetMetadataInfo().getMetadataType().getCode(), + this.getTargetMetadataInfo().getNameSpace(), this.getTargetMetadataNotFoundMessage()); } /** @@ -119,10 +112,14 @@ public class MetadataGetterParameter { * @return */ public WebMetadataUri getSourceMetadataUri() { - if (this.getSourceMetadataType() == null) { - this.setSourceMetadataType(MetadataTypeEnum.Frm); + if (this.getSourceMetadataInfo() == null) { + return null; } - return new WebMetadataUri(this.getSourceMetadataId(), this.getSourceMetadataCode(), this.getSourceMetadataType().getCode(), this.getSourceMetadataNameSpace()); + return new WebMetadataUri(this.getSourceMetadataInfo().getId(), + this.getSourceMetadataInfo().getCode(), + this.getSourceMetadataInfo().getName(), + this.getSourceMetadataInfo().getMetadataType().getCode(), + this.getSourceMetadataInfo().getPath(), null); } /** @@ -132,10 +129,81 @@ public class MetadataGetterParameter { * @param sourceMetadataType */ public void setSourceMetadata(GspMetadata gspMetadata, MetadataTypeEnum sourceMetadataType) { - this.sourceMetadataId = gspMetadata.getHeader().getId(); - this.sourceMetadataPath = gspMetadata.getRelativePath(); - this.sourceMetadataNameSpace = gspMetadata.getHeader().getNameSpace(); - this.sourceMetadataCode = gspMetadata.getHeader().getCode(); - this.sourceMetadataType = sourceMetadataType; + this.setSourceMetadataId(gspMetadata.getHeader().getId()); + this.setSourceMetadataCode(gspMetadata.getHeader().getCode()); + this.setSourceMetadataName(gspMetadata.getHeader().getName()); + this.setSourceMetadataNamespace(gspMetadata.getHeader().getNameSpace()); + this.setSourceMetadataPath(gspMetadata.getRelativePath()); + this.setSourceMetadataType(sourceMetadataType); + } + + public void setSourceMetadataId(String metadataId) { + this.sourceMetadataInfo.setId(metadataId); + } + + public void setSourceMetadataCode(String metadataCode) { + this.sourceMetadataInfo.setCode(metadataCode); + } + + public void setSourceMetadataName(String metadataName) { + this.sourceMetadataInfo.setName(metadataName); + } + + public void setSourceMetadataType(MetadataTypeEnum metadataType) { + this.sourceMetadataInfo.setMetadataType(metadataType); } + + public void setSourceMetadataPath(String metadataPath) { + this.sourceMetadataInfo.setPath(metadataPath); + } + + public void setSourceMetadataNamespace(String metadataNamespace) { + this.sourceMetadataInfo.setNameSpace(metadataNamespace); + } + + + public void setTargetMetadataCode(String metadataCode) { + this.targetMetadataInfo.setCode(metadataCode); + } + + public void setTargetMetadataName(String metadataName) { + this.targetMetadataInfo.setName(metadataName); + } + + + public void setTargetMetadataNamespace(String metadataNamespace) { + this.targetMetadataInfo.setNameSpace(metadataNamespace); + } + + /** + * 参数中元数据信息 + */ + @Data + public static class GetterMetadataInfo { + /** + * 请求参数中元数据id + */ + private String id; + /** + * 请求参数中元数据code + */ + private String code; + /** + * 请求参数中元数据name + */ + private String name; + /** + * 请求参数元数据类型 + */ + private MetadataTypeEnum metadataType = MetadataTypeEnum.Frm; + /** + * 请求参数中元数据路径 + */ + private String path; + /** + * 请求参数中元数据namespace + */ + private String nameSpace; + } + } diff --git a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataTypeEnum.java b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataTypeEnum.java index 77f1b3bd..b71444de 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataTypeEnum.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataTypeEnum.java @@ -16,6 +16,8 @@ package com.inspur.edp.web.common.metadata; +import com.inspur.edp.web.common.logger.WebLogger; + /** * 定义元数据类型枚举参数 * @@ -30,6 +32,11 @@ public enum MetadataTypeEnum { public String getCode() { return "Form"; } + + @Override + public String getName() { + return "表单元数据"; + } }, /** * eapi 元数据 @@ -39,6 +46,11 @@ public enum MetadataTypeEnum { public String getCode() { return "Eapi"; } + + @Override + public String getName() { + return "Eapi元数据"; + } }, /** * 资源元数据 @@ -48,6 +60,11 @@ public enum MetadataTypeEnum { public String getCode() { return "Resource"; } + + @Override + public String getName() { + return "资源元数据"; + } }, /** * 状态机元数据 @@ -57,6 +74,11 @@ public enum MetadataTypeEnum { public String getCode() { return "StateMachine"; } + + @Override + public String getName() { + return "状态机元数据"; + } }, /** * 命令元数据 @@ -66,6 +88,11 @@ public enum MetadataTypeEnum { public String getCode() { return "Command"; } + + @Override + public String getName() { + return "命令元数据"; + } }, /** * 页面流 @@ -75,18 +102,58 @@ public enum MetadataTypeEnum { public String getCode() { return "PageFlow"; } + + @Override + public String getName() { + return "页面流元数据"; + } + }, + /** + * 源代码文件定义 + */ + SourceCode { + @Override + public String getCode() { + return "SourceCode"; + } + + @Override + public String getName() { + return "SourceCode元数据"; + } }, Component { @Override public String getCode() { return "Component"; } + + @Override + public String getName() { + return "构件元数据"; + } }, ViewModel { @Override public String getCode() { return "ViewModel"; } + + @Override + public String getName() { + return "视图模型"; + } + }, + TS { + @Override + public String getCode() { + return "Ts"; + } + + @Override + public String getName() { + return "自定义构件元数据"; + } }; /** @@ -96,6 +163,24 @@ public enum MetadataTypeEnum { */ public abstract String getCode(); + public abstract String getName(); + + /** + * 执行类型转换 + * + * @param metadataType + * @return + */ + public static MetadataTypeEnum from(String metadataType) { + try { + MetadataTypeEnum metadataTypeEnum = MetadataTypeEnum.valueOf(metadataType); + return metadataTypeEnum; + } catch (Exception ex) { + WebLogger.Instance.error("元数据类型转换失败,待转换类型为:" + metadataType); + } + return MetadataTypeEnum.Frm; + } + @Override public String toString() { return this.getCode(); 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 298e2bfb..4ee13336 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 @@ -30,6 +30,7 @@ import com.inspur.edp.web.common.utility.StringUtility; import java.util.HashMap; import java.util.List; +import java.util.function.Supplier; /** * 元数据工具类 @@ -141,20 +142,27 @@ public final class MetadataUtility { } /** - * 根据元数据id获取元数据信息 + * 根据元数据参数信息获取对应的元数据 * - * @param metadataId + * @param targetMetadataInfo 目标元数据参数配置 + * @param sourceMetadataInfo 源 元数据参数配置 + * @param customTargetMetadataNotFoundMessage 自定义 元数据找不到异常提示 + * @param executeEnvironment + * @param isInUpgradeTool * @return */ - public GspMetadata getMetadataWithEnvironment(String metadataId, ExecuteEnvironment executeEnvironment, boolean isInUpgradeTool) { - if (StringUtility.isNullOrEmpty(metadataId)) { + public GspMetadata getMetadataWithEnvironment(MetadataGetterParameter.GetterMetadataInfo targetMetadataInfo, + MetadataGetterParameter.GetterMetadataInfo sourceMetadataInfo, + String customTargetMetadataNotFoundMessage, + ExecuteEnvironment executeEnvironment, boolean isInUpgradeTool) { + if (targetMetadataInfo == null || StringUtility.isNullOrEmpty(targetMetadataInfo.getId())) { return null; } // 如果在升级工具中执行 if (isInUpgradeTool) { if (MetadataUtilityWithRuntimeRpc.hasCustomizationServerServiceInstance()) { - return MetadataUtilityWithRuntimeRpc.getMetadata(metadataId); + return MetadataUtilityWithRuntimeRpc.getMetadata(targetMetadataInfo.getId()); } else { // 如果获取不到 那么设定执行运行时获取 executeEnvironment = ExecuteEnvironment.Runtime; @@ -163,12 +171,60 @@ public final class MetadataUtility { if (executeEnvironment.equals(ExecuteEnvironment.Design)) { // 设计时元数据获取 - return MetadataUtilityWithDesign.getMetadata(new MetadataURI(metadataId), null, null); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(); + metadataGetterParameter.setTargetMetadataInfo(targetMetadataInfo); + metadataGetterParameter.setSourceMetadataInfo(sourceMetadataInfo); + metadataGetterParameter.setTargetMetadataNotFoundMessage(customTargetMetadataNotFoundMessage); + return MetadataUtilityWithDesign.getMetadata(metadataGetterParameter.getTargetMetadataUri(), metadataGetterParameter.getSourceMetadataUri(), targetMetadataInfo.getPath()); } else { - return MetadataUtilityWithRuntime.getMetadata(metadataId); + return MetadataUtilityWithRuntime.getMetadata(targetMetadataInfo.getId()); } } + /** + * 根据元数据id获取元数据信息 + * + * @param targetMetadataInfo 目标元数据信息不能为空 + * @param sourceMetadataInfo 如果为运行时,可以为空 + * @param executeEnvironment 执行环境:运行时或设计时 + * @param isInUpgradeTool 是否运行在补丁工具中 + * @return + */ + public GspMetadata getMetadataWithEnvironment(MetadataGetterParameter.GetterMetadataInfo targetMetadataInfo, + MetadataGetterParameter.GetterMetadataInfo sourceMetadataInfo, + ExecuteEnvironment executeEnvironment, boolean isInUpgradeTool) { + return this.getMetadataWithEnvironment(targetMetadataInfo, sourceMetadataInfo, null, executeEnvironment, isInUpgradeTool); + } + + + public GspMetadata getMetadataWithEnvironment(Supplier targetMetadataInfoSupplierAction, + Supplier sourceMetadataInfoSupplierAction, + ExecuteEnvironment executeEnvironment, boolean isInUpgradeTool) { + if (targetMetadataInfoSupplierAction == null) { + return null; + } + MetadataGetterParameter.GetterMetadataInfo targetMetadataInfo = targetMetadataInfoSupplierAction.get(); + MetadataGetterParameter.GetterMetadataInfo sourceMetadataInfo = null; + if (sourceMetadataInfoSupplierAction != null) { + sourceMetadataInfo = sourceMetadataInfoSupplierAction.get(); + } + return getMetadataWithEnvironment(targetMetadataInfo, sourceMetadataInfo, executeEnvironment, isInUpgradeTool); + } + + public GspMetadata getMetadataWithEnvironment(Supplier targetMetadataInfoSupplierAction, + Supplier sourceMetadataInfoSupplierAction, + String customTargetMetadataNotFoundMessage, + ExecuteEnvironment executeEnvironment, boolean isInUpgradeTool) { + if (targetMetadataInfoSupplierAction == null) { + return null; + } + MetadataGetterParameter.GetterMetadataInfo targetMetadataInfo = targetMetadataInfoSupplierAction.get(); + MetadataGetterParameter.GetterMetadataInfo sourceMetadataInfo = null; + if (sourceMetadataInfoSupplierAction != null) { + sourceMetadataInfo = sourceMetadataInfoSupplierAction.get(); + } + return getMetadataWithEnvironment(targetMetadataInfo, sourceMetadataInfo, customTargetMetadataNotFoundMessage, executeEnvironment, isInUpgradeTool); + } /** * 运行时获取元数据接口方法 @@ -271,13 +327,8 @@ public final class MetadataUtility { switch (item.getItemType()) { case MethodRefer: CmpMethodRefering methodReferingItem = (CmpMethodRefering) item; - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(methodReferingItem.getComponentId(), commandMetadata.getRelativePath()); - metadataGetterParameter.setSourceMetadataId(commandMetadata.getHeader().getId()); - metadataGetterParameter.setSourceMetadataType(MetadataTypeEnum.Command); - metadataGetterParameter.setSourceMetadataCode(commandMetadata.getHeader().getCode()); - metadataGetterParameter.setSourceMetadataPath(commandMetadata.getRelativePath()); - metadataGetterParameter.setSourceMetadataNameSpace(commandMetadata.getHeader().getNameSpace()); - metadataGetterParameter.setTargetMetadataType(MetadataTypeEnum.Component); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(methodReferingItem.getComponentId(), commandMetadata.getRelativePath(), MetadataTypeEnum.Component); + metadataGetterParameter.setSourceMetadata(commandMetadata, MetadataTypeEnum.Command); GspMetadata webComponentMetadata = getMetadataWithDesign(metadataGetterParameter); diff --git a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithDesign.java b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithDesign.java index 683653b9..514e7d8d 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithDesign.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataUtilityWithDesign.java @@ -139,7 +139,7 @@ class MetadataUtilityWithDesign { * @return */ public static GspMetadata getMetadata(MetadataGetterParameter metadataGetterParameter) { - return getMetadata(metadataGetterParameter.getTargetMetadataUri(), metadataGetterParameter.getSourceMetadataUri(), metadataGetterParameter.getTargetMetadataSpacePath()); + return getMetadata(metadataGetterParameter.getTargetMetadataUri(), metadataGetterParameter.getSourceMetadataUri(), metadataGetterParameter.getTargetMetadataInfo().getPath()); } public static GspMetadata getMetadata(MetadataURI targetMetadataUri, MetadataURI sourceMetadataUri, String projectPath) { diff --git a/web-common/src/main/java/com/inspur/edp/web/common/metadata/WebMetadataUri.java b/web-common/src/main/java/com/inspur/edp/web/common/metadata/WebMetadataUri.java index 39948345..4f891018 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/metadata/WebMetadataUri.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/metadata/WebMetadataUri.java @@ -19,6 +19,7 @@ package com.inspur.edp.web.common.metadata; import com.inspur.edp.lcm.metadata.api.entity.uri.MetadataURI; import com.inspur.edp.web.common.utility.StringUtility; import lombok.Data; +import org.springframework.util.StringUtils; /** * 继承 MetadataUri 主要目的是重写其中的输出方法 @@ -32,16 +33,14 @@ public class WebMetadataUri extends MetadataURI { */ private String customMetadataNotFoundMessage; - public WebMetadataUri() { - super(); - } - - public WebMetadataUri(String id) { - super(id); - } + /** + * 元数据关联名称 + */ + private String name; - public WebMetadataUri(String id, String code, String type, String nameSpace) { + public WebMetadataUri(String id, String code, String name, String type, String nameSpace, String customMetadataNotFoundMessage) { super(id, code, type, nameSpace); + this.customMetadataNotFoundMessage = customMetadataNotFoundMessage; } @Override 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 65fd4671..64fc0c35 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 @@ -31,6 +31,7 @@ import com.inspur.edp.udt.designtime.api.nocode.BusinessField; import com.inspur.edp.udt.designtime.api.nocode.IBusinessFieldService; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.designschema.elements.ComplexField; @@ -636,9 +637,13 @@ public class FieldBuilder { private GspMetadata getMetadata(String id, boolean isRuntime) { if (isRuntime) { - return MetadataUtility.getInstance().getMetadataWithEnvironment(id, ExecuteEnvironment.Runtime, false); + return MetadataUtility.getInstance().getMetadataWithEnvironment(() -> { + MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); + getterMetadataInfo.setId(id); + return getterMetadataInfo; + }, null, ExecuteEnvironment.Runtime, false); } else { - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(id, null); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(id, null, MetadataTypeEnum.ViewModel); metadataGetterParameter.setTargetMetadataNotFoundMessage("更新表单schema,关联字段元数据找不到,请修正。对应字段元数据id为:" + id); return MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); } 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 3cf54eb8..539010ab 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 @@ -28,6 +28,7 @@ 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.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.designschema.elements.Field; import com.inspur.edp.web.designschema.elements.SimpleField; @@ -230,7 +231,7 @@ public class FieldTypeBuilder { CustomizationService customizationService = SpringBeanUtils.getBean(CustomizationService.class); typeMetadata = customizationService.getMetadata(uri); } else { - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(uri, null); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(uri, null, MetadataTypeEnum.ViewModel); metadataGetterParameter.setTargetMetadataNotFoundMessage("更新表单Schema,获取UDT字段元数据失败,元数据不存在。对应元数据id为:" + uri); typeMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); } 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 5861379c..8d77af30 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 @@ -22,6 +22,7 @@ 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.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.designschema.elements.Schema; @@ -56,7 +57,7 @@ public class FormMetadataUpdate { Synchronizer synchronizer = new Synchronizer(); for (Schema schema : schemaList) { if ("vo".equals(schema.getSourceType())) { - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(schema.getId(), null); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(schema.getId(), null, MetadataTypeEnum.ViewModel); metadataGetterParameter.setTargetMetadataNotFoundMessage("根据表单元数据获取VO元数据为空,请检查表单元数据module>schemas>id 是否正确,此参数对应VO元数据id参数"); GspMetadata metadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); diff --git a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java index 939f946b..3f2592ac 100644 --- a/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java +++ b/web-dynamic-form-core/src/main/java/com/inspur/edp/web/dynamicform/core/service/DynamicCreateFormMetadataServiceImpl.java @@ -30,6 +30,7 @@ import com.inspur.edp.web.common.entity.ResultMessage; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.common.utility.DateUtility; @@ -103,7 +104,7 @@ public class DynamicCreateFormMetadataServiceImpl implements DynamicCreateFormMe FormDOM formDOM = SerializeUtility.getInstance().deserialize(templateContent, FormDOM.class); // 读取VO元数据 进行表单参数构造 - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(metadataInfoItem.getVoMetadataId(), FileUtility.getPlatformIndependentPath(parameter.getProjectPath())); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(metadataInfoItem.getVoMetadataId(), FileUtility.getPlatformIndependentPath(parameter.getProjectPath()), MetadataTypeEnum.ViewModel); GspMetadata voMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); IMetadataContent voMetaContent = voMetadata.getContent(); GspViewModel gspViewModel = (GspViewModel) voMetaContent; diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java index 8eabd300..14556b56 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java @@ -28,6 +28,8 @@ import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.io.NodejsFunctionUtility; import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.GspProjectUtility; +import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.*; import com.inspur.edp.web.formmetadata.i18n.constant.I18nResourceConstant; @@ -403,7 +405,18 @@ public class JITEngineManager { String externalFormBasePath = FileUtility.combine(targetStorageBasePath, json.getModule().getCode().toLowerCase(), externalVisualDom.getExternalComponentPath()); /// 表单service文件路径 String externalFormServicePath = FileUtility.combine(formServicePath, json.getModule().getCode().toLowerCase(), "externalcomponents", externalVisualDom.getExternalComponentPath()); - GspMetadata formMetadata = MetadataUtility.getInstance().getMetadataWithEnvironment(externalVisualDom.getExternalComponentUri(), executeEnvironment, isUpdradeTool); + GspMetadata formMetadata = MetadataUtility.getInstance().getMetadataWithEnvironment(() -> { + MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); + getterMetadataInfo.setId(externalVisualDom.getExternalComponentUri()); + getterMetadataInfo.setMetadataType(MetadataTypeEnum.Frm); + return getterMetadataInfo; + }, () -> { + MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); + getterMetadataInfo.setMetadataType(MetadataTypeEnum.Frm); + getterMetadataInfo.setCode(json.getModule().getCode()); + getterMetadataInfo.setName(json.getModule().getName()); + return getterMetadataInfo; + }, executeEnvironment, isUpdradeTool); String[] params = {externalVisualDom.getExternalComponentPath(), externalVisualDom.getJson().getModule().getCode()}; strI18nResourcePrefix = GenerateResourceManager.generateKeyPrefix(strI18nResourcePrefix, params).toLowerCase(); diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandsAnalysis.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandsAnalysis.java index f8fe238a..c135c269 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandsAnalysis.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandsAnalysis.java @@ -21,6 +21,8 @@ import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.web.command.component.metadata.*; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.logger.WebLogger; +import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; @@ -249,7 +251,12 @@ public class CommandsAnalysis { } CommandsMetadataManager manager = new CommandsMetadataManager(this.executeEnvironment, this.isUpdradeTool); - GspMetadata metadata = manager.getMetadata(cmpId); + GspMetadata metadata = manager.getMetadata(() -> { + MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); + getterMetadataInfo.setId(cmpId); + getterMetadataInfo.setMetadataType(MetadataTypeEnum.TS); + return getterMetadataInfo; + },null, null); if (metadata == null) { throw new RuntimeException("load command metatdata is null,commandId is " + cmpId); diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/BaseMetaDataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/BaseMetaDataManager.java index b6d41d05..5e379db2 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/BaseMetaDataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/BaseMetaDataManager.java @@ -19,17 +19,23 @@ package com.inspur.edp.web.jitengine.metadatamanager; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.inspur.edp.lcm.metadata.api.IMetadataContent; 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.io.FileUtility; +import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; +import javax.validation.constraints.Null; +import java.util.function.Supplier; + /** * 基础元数据manager * * @author noah */ -public class BaseMetaDataManager { +public abstract class BaseMetaDataManager { /** * 设定必须获取当前的运行环境 @@ -45,6 +51,23 @@ public class BaseMetaDataManager { private String relativePath = ""; + /** + * 默认的元数据找不到异常信息提示格式化参数 + */ + protected static final String defaultMetadataNotFoundFormatMessage = "根据元数据id获取元数据信息为空,对应元数据id:%s,元数据类型为:%s"; + + /** + * 获取默认的元数据找不到异常信息 + * + * @param metadataId + * @param metadataType + * @return + */ + protected String getDefaultMetadataNotFoundFormatMessage(String metadataId, MetadataTypeEnum metadataType) { + return String.format(defaultMetadataNotFoundFormatMessage, metadataId, metadataType.getName()); + } + + public String getRelativePath() { return this.relativePath; } @@ -60,8 +83,22 @@ public class BaseMetaDataManager { this.executeEnvironment = value; } - public GspMetadata getMetadata(String metaDataID) { - GspMetadata metadata = MetadataUtility.getInstance().getMetadataWithEnvironment(metaDataID, this.executeEnvironment, this.isUpdradeTool); + /** + * 依据元数据id获取目标元数据信息 + * 目标元数据构造不能为空,源 元数据构造允许为空,增加源 元数据构造的目的是为了异常提示友好 + * + * @param targetMetadataSupplierAction 目标元数据参数构造supplierAction + * @param sourceMetadataSupplierAction 源 元数据参数构造 supplierAction + * @return + */ + public GspMetadata getMetadata(Supplier targetMetadataSupplierAction, + Supplier sourceMetadataSupplierAction, String customTargetMetadataNotFoundMessage) { + if (targetMetadataSupplierAction == null) { + throw new WebCustomException("元数据获取,构造目标元数据信息supplierAction不能为空"); + } + + GspMetadata metadata = MetadataUtility.getInstance().getMetadataWithEnvironment(targetMetadataSupplierAction, sourceMetadataSupplierAction, customTargetMetadataNotFoundMessage, this.executeEnvironment, isUpdradeTool); + if (metadata != null) { relativePath = metadata.getRelativePath(); } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandServiceManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandServiceManager.java index c4364e67..b69e78e3 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandServiceManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandServiceManager.java @@ -19,6 +19,8 @@ package com.inspur.edp.web.jitengine.metadatamanager; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.logger.WebLogger; +import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.common.utility.StringUtility; @@ -69,13 +71,19 @@ public class CommandServiceManager { /** * 从元数据中读取ts内容 适用于跨工程引用表单的情况 + * * @param cmpId * @param executeEnvironment * @param isUpdradeTool * @return */ private static String getTsSourceFromMetaData(String cmpId, ExecuteEnvironment executeEnvironment, boolean isUpdradeTool) { - GspMetadata gspMetadata = MetadataUtility.getInstance().getMetadataWithEnvironment(cmpId, executeEnvironment, isUpdradeTool); + GspMetadata gspMetadata = MetadataUtility.getInstance().getMetadataWithEnvironment(() -> { + MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); + getterMetadataInfo.setId(cmpId); + getterMetadataInfo.setMetadataType(MetadataTypeEnum.TS); + return getterMetadataInfo; + }, null, String.format("获取ts命令元数据为空,对应ts命令元数据id:%s", cmpId), executeEnvironment, isUpdradeTool); if (gspMetadata != null && !StringUtility.isNullOrEmpty(gspMetadata.getExtendProperty())) { CommandExtendProperty commandExtendProperty = SerializeUtility.getInstance().deserialize(gspMetadata.getExtendProperty(), CommandExtendProperty.class); if (commandExtendProperty != null) { diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandsMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandsMetadataManager.java index ad970688..f78fe91f 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandsMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandsMetadataManager.java @@ -19,6 +19,8 @@ package com.inspur.edp.web.jitengine.metadatamanager; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.web.command.component.metadata.WebCommandsMetadata; import com.inspur.edp.web.common.environment.ExecuteEnvironment; +import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; /** * 命令元数据manager @@ -31,7 +33,12 @@ public class CommandsMetadataManager extends BaseMetaDataManager { } public WebCommandsMetadata getWebCommands(String id) { - GspMetadata webCommandMetadata = getMetadata(id); + GspMetadata webCommandMetadata = getMetadata(() -> { + MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); + getterMetadataInfo.setId(id); + getterMetadataInfo.setMetadataType(MetadataTypeEnum.Command); + return getterMetadataInfo; + }, null, this.getDefaultMetadataNotFoundFormatMessage(id, MetadataTypeEnum.Command)); if (webCommandMetadata == null) { throw new RuntimeException("load webCommand metadata is null,the commandId is " + id); } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/ComponentMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/ComponentMetadataManager.java index 37b0d678..bf91c185 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/ComponentMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/ComponentMetadataManager.java @@ -19,6 +19,8 @@ package com.inspur.edp.web.jitengine.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.environment.ExecuteEnvironment; +import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; /** * 构件元数据manager @@ -31,7 +33,12 @@ public class ComponentMetadataManager extends BaseMetaDataManager { } public WebComponentMetadata getComponentMetadata(String id) { - GspMetadata webComponentMetadata = getMetadata(id); + GspMetadata webComponentMetadata = getMetadata(() -> { + MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); + getterMetadataInfo.setId(id); + getterMetadataInfo.setMetadataType(MetadataTypeEnum.Component); + return getterMetadataInfo; + }, null, this.getDefaultMetadataNotFoundFormatMessage(id, MetadataTypeEnum.Component)); if (webComponentMetadata == null) { throw new RuntimeException("load webComponent metadata is null,the metaDataId is " + id); } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/EapiMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/EapiMetadataManager.java index 83fb816b..dce95500 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/EapiMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/EapiMetadataManager.java @@ -19,14 +19,17 @@ package com.inspur.edp.web.jitengine.metadatamanager; import com.inspur.edp.lcm.metadata.api.IMetadataContent; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.web.common.environment.ExecuteEnvironment; +import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; /** * Eapi 元数据管理器 - * @author noah + * + * @author noah */ public class EapiMetadataManager extends BaseMetaDataManager { public EapiMetadataManager(ExecuteEnvironment executeEnvironment, boolean isUpdradeTool) { - super(executeEnvironment,isUpdradeTool); + super(executeEnvironment, isUpdradeTool); } /** @@ -35,10 +38,15 @@ public class EapiMetadataManager extends BaseMetaDataManager { * @return */ public IMetadataContent getEapiMetadataContent(String eapiMetadataId) { - GspMetadata eapiMetadata=getMetadata(eapiMetadataId); - if(eapiMetadata==null){ + GspMetadata eapiMetadata = getMetadata(() -> { + MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); + getterMetadataInfo.setId(eapiMetadataId); + getterMetadataInfo.setMetadataType(MetadataTypeEnum.Eapi); + return getterMetadataInfo; + }, null, this.getDefaultMetadataNotFoundFormatMessage(eapiMetadataId, MetadataTypeEnum.Eapi)); + if (eapiMetadata == null) { throw new RuntimeException("load eapi metadata is null,the metaDataId is " + eapiMetadataId); } - return getMetadata(eapiMetadataId).getContent(); + return eapiMetadata.getContent(); } } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/FormMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/FormMetadataManager.java index 21fa144d..a9bf0fae 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/FormMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/FormMetadataManager.java @@ -19,10 +19,13 @@ package com.inspur.edp.web.jitengine.metadatamanager; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.lcm.metadata.api.entity.MetadataHeader; import com.inspur.edp.web.common.environment.ExecuteEnvironment; +import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.formmetadata.metadata.FormMetadataContent; /** * 表单元数据管理 + * * @author guozhiqi */ public class FormMetadataManager extends BaseMetaDataManager { @@ -46,7 +49,12 @@ public class FormMetadataManager extends BaseMetaDataManager { * @return */ private GspMetadata getFormMetaData(String metaDataId) { - GspMetadata metadata = getMetadata(metaDataId); + GspMetadata metadata = getMetadata(() -> { + MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); + getterMetadataInfo.setId(metaDataId); + getterMetadataInfo.setMetadataType(MetadataTypeEnum.Frm); + return getterMetadataInfo; + }, null, this.getDefaultMetadataNotFoundFormatMessage(metaDataId, MetadataTypeEnum.Frm)); if (metadata == null) { throw new RuntimeException("load form metadata is null,the metaDataId is " + metaDataId); } @@ -60,12 +68,4 @@ public class FormMetadataManager extends BaseMetaDataManager { GspMetadata metadata = this.getFormMetaData(metadataID); return ((FormMetadataContent) metadata.getContent()).getContents().toString(); } - - /** - * 根据元数据ID获取元数据信息 - */ - public MetadataHeader getVisulDomHeader(String metaDataID) { - GspMetadata metadata = this.getMetadata(metaDataID); - return metadata.getHeader(); - } } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/StateMachineMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/StateMachineMetadataManager.java index 8af6360a..5188feb3 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/StateMachineMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/StateMachineMetadataManager.java @@ -18,6 +18,8 @@ package com.inspur.edp.web.jitengine.metadatamanager; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.web.common.environment.ExecuteEnvironment; +import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; public class StateMachineMetadataManager extends BaseMetaDataManager { public StateMachineMetadataManager(ExecuteEnvironment executeEnvironment, boolean isUpdradeTool) { @@ -25,7 +27,12 @@ public class StateMachineMetadataManager extends BaseMetaDataManager { } public Object getStateMachine(String id) { - GspMetadata stateMachineMetaData = getMetadata(id); + GspMetadata stateMachineMetaData = getMetadata(() -> { + MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); + getterMetadataInfo.setId(id); + getterMetadataInfo.setMetadataType(MetadataTypeEnum.StateMachine); + return getterMetadataInfo; + }, null, this.getDefaultMetadataNotFoundFormatMessage(id, MetadataTypeEnum.StateMachine)); if (stateMachineMetaData == null) { throw new RuntimeException("load statemachine metadata is null,the metaDataId is " + id); } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/sourcecode/SourceCodeInFormManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/sourcecode/SourceCodeInFormManager.java index 489988e8..679e4fba 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/sourcecode/SourceCodeInFormManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/sourcecode/SourceCodeInFormManager.java @@ -23,6 +23,8 @@ import com.inspur.edp.lcm.metadata.api.IMetadataContent; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.web.common.environment.ExecuteEnvironment; import com.inspur.edp.web.common.logger.WebLogger; +import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.common.utility.StringUtility; @@ -98,7 +100,12 @@ public class SourceCodeInFormManager { */ public static SourceCodeMetadataEntity getSourceCodeMetadataWithId(String sourceCodeMetadataId, boolean isUpdradeTool) { if (!StringUtility.isNullOrEmpty(sourceCodeMetadataId)) { - GspMetadata gspMetadata = MetadataUtility.getInstance().getMetadataWithEnvironment(sourceCodeMetadataId, ExecuteEnvironment.Runtime, isUpdradeTool); + GspMetadata gspMetadata = MetadataUtility.getInstance().getMetadataWithEnvironment(() -> { + MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); + getterMetadataInfo.setId(sourceCodeMetadataId); + getterMetadataInfo.setMetadataType(MetadataTypeEnum.SourceCode); + return getterMetadataInfo; + }, null, ExecuteEnvironment.Runtime, isUpdradeTool); if (gspMetadata != null) { IMetadataContent metadataContent = gspMetadata.getContent(); SourceCodeMetadataEntity metadataEntity = SerializeUtility.getInstance().deserialize(SerializeUtility.getInstance().serialize(metadataContent, false), SourceCodeMetadataEntity.class); 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 4c0e5b7a..ac54b950 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 @@ -97,7 +97,7 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { // 如果删除的是webcmp 那么在删除之后将对应的ts文件进行删除 if ("WebComponent".equals(metadataEventArgs.getMetadata().getHeader().getType())) { - RelateTsFileDeleteWhenWebComponentDeleted relateTsFileDeleteWhenWebComponentDeleted=new RelateTsFileDeleteWhenWebComponentDeleted(metadataEventArgs); + RelateTsFileDeleteWhenWebComponentDeleted relateTsFileDeleteWhenWebComponentDeleted = new RelateTsFileDeleteWhenWebComponentDeleted(metadataEventArgs); relateTsFileDeleteWhenWebComponentDeleted.deleteTsFileAfterWebComponentDeleted(); } @@ -129,6 +129,7 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { return TerminalType.PC.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType()) || TerminalType.MOBILE.getMetadataType().equals(metadataEventArgs.getMetadata().getHeader().getType()); } + /** * 表单元数据删除后将关联的文件进行删除 * @@ -393,7 +394,7 @@ public class FormMetadataSaveEventListener implements MetadataEventListener { if (objEapiId != null) { String strEapiId = objEapiId.toString(); - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(strEapiId, projectPath); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(strEapiId, projectPath, MetadataTypeEnum.Eapi); metadataGetterParameter.setSourceMetadata(sourceFormMetadata, MetadataTypeEnum.Frm); GspMetadata eapiMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (eapiMetadata != null) { 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 af2697de..922bc12c 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 @@ -23,6 +23,7 @@ import com.inspur.edp.lcm.metadata.api.entity.MetadataProject; import com.inspur.edp.web.command.component.metadata.*; import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.formmetadata.metadata.formdom.FormDOM; @@ -124,7 +125,7 @@ class WebCommandMetadataDelete { } private WebCommandsMetadata getWebCommands(String id) { - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(id, null); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(id, null, MetadataTypeEnum.Command); metadataGetterParameter.setTargetMetadataNotFoundMessage("获取命令元数据为空,对应元数据id为:" + id); GspMetadata webCommandMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (webCommandMetadata == null) { @@ -134,7 +135,7 @@ class WebCommandMetadataDelete { } public WebComponentMetadata getComponentMetadata(String id) { - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(id, null); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(id, null, MetadataTypeEnum.Component); metadataGetterParameter.setTargetMetadataNotFoundMessage("获取WebComponent元数据为空,对应元数据id为:" + id); GspMetadata webComponentMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (webComponentMetadata == null) { @@ -238,7 +239,7 @@ class WebCommandMetadataDelete { throw new Exception("获取ts文件名出错,对应的web构件id不能为空。"); } - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(cmpId, null); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(cmpId, null, MetadataTypeEnum.TS); metadataGetterParameter.setTargetMetadataNotFoundMessage("获取web构件元数据为空,对应元数据id为:" + cmpId); GspMetadata metadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataCmdManager.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataCmdManager.java index d80ec9c0..2a523a8e 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataCmdManager.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/replication/FormMetadataCmdManager.java @@ -57,7 +57,7 @@ public class FormMetadataCmdManager { WebLogger.Instance.info("表单元数据复制,webcmds节点下,对应的id参数为空。完整的命令信息:" + webcmd); continue; } - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(webcmdId, sourceFormMetadata.getRelativePath()); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(webcmdId, sourceFormMetadata.getRelativePath(), MetadataTypeEnum.Command); metadataGetterParameter.setSourceMetadata(sourceFormMetadata, MetadataTypeEnum.Frm); GspMetadata webCmdMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); 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 03b81e0a..70b0d027 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 @@ -43,7 +43,7 @@ class FormMetadataSmManager { if (StringUtility.isNullOrEmpty(stateMachineId)) { continue; } - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(stateMachineId, sourceFormMetadata.getRelativePath()); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(stateMachineId, sourceFormMetadata.getRelativePath(), MetadataTypeEnum.StateMachine); metadataGetterParameter.setSourceMetadata(sourceFormMetadata, MetadataTypeEnum.Frm); GspMetadata stateMachineMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); MetadataDto stateMachineMetadataDto = new MetadataDto(); 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 3c5dc38b..1dc9da25 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 @@ -49,7 +49,7 @@ class FormMetadataVoManager { // 如果不存在对应的voId 那么无法进行vo拷贝 continue; } - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(viewObjectId, sourceFormMetadata.getRelativePath()); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(viewObjectId, sourceFormMetadata.getRelativePath(), MetadataTypeEnum.ViewModel); metadataGetterParameter.setSourceMetadata(sourceFormMetadata, MetadataTypeEnum.Frm); GspMetadata viewObjectMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetadataRTService.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetadataRTService.java index 6effd60f..5ee2a8f2 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetadataRTService.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetadataRTService.java @@ -55,7 +55,7 @@ public class FormMetadataRTService { formMetadataList.forEach(formMetadata -> { // 如果对应的表单元数据内容为空 那么根据id重新获取对应元数据 if (formMetadata.getContent() == null) { - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(formMetadata.getHeader().getId(), formMetadata.getRelativePath()); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(formMetadata.getHeader().getId(), formMetadata.getRelativePath(), MetadataTypeEnum.Frm); metadataGetterParameter.setSourceMetadata(viewModelMetadata, MetadataTypeEnum.ViewModel); formMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetataService.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetataService.java index b6c63314..0354049e 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetataService.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/service/FormMetataService.java @@ -31,6 +31,7 @@ import com.inspur.edp.web.common.entity.ResultMessage; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.common.utility.StringUtility; @@ -296,7 +297,7 @@ public class FormMetataService { if (!MetadataUtility.getInstance().isMetaDataExistsWithMetadataIDAndPathWithDesign(sourceMetadataRelativePath, sourceMetadataId)) { return ResultCode.info("待复制的表单元数据不存在,请确认该元数据是否已被删除。"); } - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(sourceMetadataId, sourceMetadataRelativePath); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(sourceMetadataId, sourceMetadataRelativePath, MetadataTypeEnum.Frm); metadataGetterParameter.setTargetMetadataNotFoundMessage("表单复制失败,待复制的表单元数据不存在,请确认该元数据是否已被删除。"); GspMetadata sourceFormMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/changedetect/generate/stepexecute/MetadataChangeStepExecuteImpl.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/changedetect/generate/stepexecute/MetadataChangeStepExecuteImpl.java index 970ed43c..2e34e88b 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/changedetect/generate/stepexecute/MetadataChangeStepExecuteImpl.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/changedetect/generate/stepexecute/MetadataChangeStepExecuteImpl.java @@ -73,10 +73,10 @@ public class MetadataChangeStepExecuteImpl extends AbstractGenerateChangeDetectS // 首先进行元数据变化的检测 如果发生变化 那么认定需要重新生成 // 工程目录下所有的元数据变更检测 boolean webRelyMetadataChanged; - if (context.getTerminalType() == TerminalType.MOBILE){ + if (context.getTerminalType() == TerminalType.MOBILE) { webRelyMetadataChanged = metadataProjectService.isMetadataChanged(context.getProjectPath(), OperationEnum.WEB_GENERATE, this::checkMobileFilePath); - }else{ + } else { webRelyMetadataChanged = metadataProjectService.isMetadataChanged(context.getProjectPath(), OperationEnum.WEB_GENERATE, this::checkFilePath); } @@ -188,7 +188,7 @@ public class MetadataChangeStepExecuteImpl extends AbstractGenerateChangeDetectS ChangeDetectStepExecuteResult executeResult = ChangeDetectStepExecuteResult.getPassResult(ChangeDetectExecuteType.Generate); if (t.getContent() == null) { // 表示通过列表形式获取到的元数据content为空 那么单独进行元数据的读取 - MetadataGetterParameter metadataGetterParameter=MetadataGetterParameter.getNewInstance(t.getHeader().getId(), t.getRelativePath()); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(t.getHeader().getId(), t.getRelativePath(), MetadataTypeEnum.from(t.getHeader().getType())); metadataGetterParameter.setSourceMetadata(t, MetadataTypeEnum.Frm); t.setContent(MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter).getContent()); } @@ -283,10 +283,10 @@ public class MetadataChangeStepExecuteImpl extends AbstractGenerateChangeDetectS ChangeDetectStepExecuteResult executeResult = ChangeDetectStepExecuteResult.getPassResult(ChangeDetectExecuteType.Generate); MetadataProjectService metadataProjectService = this.getMetadataProjectService(); // 首先进行元数据变化的检测 如果发生变化 那么认定需要重新生成 - if (context.getTerminalType() == TerminalType.MOBILE){ + if (context.getTerminalType() == TerminalType.MOBILE) { metadataProjectService.updateMetadataChanges(context.getProjectPath(), OperationEnum.WEB_GENERATE, this::checkMobileFilePath); - }else{ + } else { metadataProjectService.updateMetadataChanges(context.getProjectPath(), OperationEnum.WEB_GENERATE, this::checkFilePath); } 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 24e3f335..1a7e59f4 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 @@ -22,6 +22,7 @@ import com.inspur.edp.lcm.metadata.api.entity.MetadataProject; import com.inspur.edp.web.common.entity.TerminalType; import com.inspur.edp.web.common.metadata.GspProjectUtility; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.serialize.SerializeUtility; import com.inspur.edp.web.common.utility.StringUtility; @@ -52,7 +53,7 @@ public class FormMetadataDebugUriWithMobile extends AbstractFormMetadataDebugUri String defaultPageUri = ""; // 进行元数据的调用借口获取方式调整 - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(formMetadataId, null); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(formMetadataId, null, MetadataTypeEnum.Frm); metadataGetterParameter.setTargetMetadataNotFoundMessage("表单调试,获取表单元数据为空,对应元数据id:" + formMetadataId); GspMetadata metadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); diff --git a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/pageflow/PageFlowMetadataManager.java b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/pageflow/PageFlowMetadataManager.java index b6071402..0a80bb29 100644 --- a/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/pageflow/PageFlowMetadataManager.java +++ b/web-frontendproject/src/main/java/com/inspur/edp/web/frontendproject/pageflow/PageFlowMetadataManager.java @@ -28,6 +28,7 @@ import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.logger.WebLogger; import com.inspur.edp.web.common.metadata.GspProjectUtility; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.frontendproject.entity.ChosenFormList; @@ -185,7 +186,7 @@ public class PageFlowMetadataManager { } // 判断元数据是否存在 try { - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(pageFlowMetadataID, projectPath); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(pageFlowMetadataID, projectPath, MetadataTypeEnum.Route); metadataGetterParameter.setTargetMetadataNotFoundMessage("找不到页面流元数据,请检查对应app.config.json文件中配置页面流元数据id是否正确或页面流元数据是否被移除。"); GspMetadata pageFlowMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); diff --git a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/RouteMetataService.java b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/RouteMetataService.java index 738bf0f1..457b7e5d 100644 --- a/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/RouteMetataService.java +++ b/web-pageflow-metadata/src/main/java/com/inspur/edp/web/pageflow/metadata/service/RouteMetataService.java @@ -21,6 +21,7 @@ import com.inspur.edp.lcm.metadata.api.service.MetadataService; import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.io.FileUtility; import com.inspur.edp.web.common.metadata.MetadataGetterParameter; +import com.inspur.edp.web.common.metadata.MetadataTypeEnum; import com.inspur.edp.web.common.metadata.MetadataUtility; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.pageflow.metadata.entity.PageFlowMetadataEntity; @@ -51,7 +52,7 @@ public class RouteMetataService { return null; } - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(routeMetadataId, projectPath); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(routeMetadataId, projectPath, MetadataTypeEnum.Route); metadataGetterParameter.setTargetMetadataNotFoundMessage("获取页面流元数据为空,请检查页面流元数据是否被删除或app.config.json中页面流定义是否正确"); GspMetadata routeMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); if (routeMetadata == null) { @@ -72,7 +73,7 @@ public class RouteMetataService { if (StringUtility.isNullOrEmpty(routeMetadataId) || StringUtility.isNullOrEmpty(projectPath)) { return; } - MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(routeMetadataId, projectPath); + MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(routeMetadataId, projectPath, MetadataTypeEnum.Route); metadataGetterParameter.setTargetMetadataNotFoundMessage("获取页面流元数据为空,请检查页面流元数据是否存在或app.config.json中页面流定义是否正确"); GspMetadata routeMetadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); -- Gitee From f958bb00ab210356d1299dbc28ae94a87a82fbb6 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Tue, 11 Apr 2023 19:34:53 +0800 Subject: [PATCH 28/31] =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/designschema/synchronization/FormMetadataUpdate.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 8d77af30..9a980cfe 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 @@ -58,7 +58,7 @@ public class FormMetadataUpdate { for (Schema schema : schemaList) { if ("vo".equals(schema.getSourceType())) { MetadataGetterParameter metadataGetterParameter = MetadataGetterParameter.getNewInstance(schema.getId(), null, MetadataTypeEnum.ViewModel); - metadataGetterParameter.setTargetMetadataNotFoundMessage("根据表单元数据获取VO元数据为空,请检查表单元数据module>schemas>id 是否正确,此参数对应VO元数据id参数"); + metadataGetterParameter.setTargetMetadataNotFoundMessage("根据表单元数据获取VO元数据为空,请检查表单元数据module>schemas>id 是否正确,此参数为表单对应VO元数据id参数!"); GspMetadata metadata = MetadataUtility.getInstance().getMetadataWithDesign(metadataGetterParameter); GspViewModel viewObject = (GspViewModel) ((metadata.getContent() instanceof GspViewModel) ? metadata.getContent() : null); -- Gitee From 4f35aa7b20bd4f56cf3536d0f14bfc266e7ebf72 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Wed, 12 Apr 2023 16:23:02 +0800 Subject: [PATCH 29/31] =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jitengine/metadataanalysis/CommandsAnalysis.java | 7 ++++--- .../web/jitengine/metadataanalysis/EapiAnalysis.java | 2 +- .../web/jitengine/metadataanalysis/FormAnalysis.java | 2 +- .../metadataanalysis/StateMachineAnalysis.java | 2 +- .../metadatamanager/CommandsMetadataManager.java | 7 +++++-- .../metadatamanager/ComponentMetadataManager.java | 7 +++++-- .../metadatamanager/EapiMetadataManager.java | 7 +++++-- .../metadatamanager/FormMetadataManager.java | 11 +++++++---- .../metadatamanager/StateMachineMetadataManager.java | 7 +++++-- 9 files changed, 34 insertions(+), 18 deletions(-) diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandsAnalysis.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandsAnalysis.java index c135c269..69a361d4 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandsAnalysis.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/CommandsAnalysis.java @@ -73,7 +73,7 @@ public class CommandsAnalysis { sbCommands.append(","); } cmdId = c.get("id").toString(); - metadata = cmdManager.getWebCommands(cmdId); + metadata = cmdManager.getWebCommands(cmdId, c.getOrDefault("code", "").toString(), c.getOrDefault("name", "").toString(), c.getOrDefault("nameSpace", "").toString()); analysisComponentMetadata(metadata, cmpList, null, componentMetadataManager, projectCmpList); try { @@ -159,7 +159,8 @@ public class CommandsAnalysis { if (!cmpList.containsKey(((CmpMethodRefering) item).getComponentId())) { if (!projectCmpList.containsKey(((CmpMethodRefering) item).getComponentId())) { try { - cmpMetadata = cmpManager.getComponentMetadata(((CmpMethodRefering) item).getComponentId()); + CmpMethodRefering cmpMethodReferingItem = (CmpMethodRefering) item; + cmpMetadata = cmpManager.getComponentMetadata(cmpMethodReferingItem.getComponentId(), cmpMethodReferingItem.getCode(), cmpMethodReferingItem.getName(), cmpMethodReferingItem.getComponentPath()); if (cmpMetadata == null) { throw new Exception("标识为'" + ((CmpMethodRefering) item).getComponentId() + "'的服务构件为null。"); } @@ -256,7 +257,7 @@ public class CommandsAnalysis { getterMetadataInfo.setId(cmpId); getterMetadataInfo.setMetadataType(MetadataTypeEnum.TS); return getterMetadataInfo; - },null, null); + }, null, null); if (metadata == null) { throw new RuntimeException("load command metatdata is null,commandId is " + cmpId); diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/EapiAnalysis.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/EapiAnalysis.java index 473d427c..8804d8b3 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/EapiAnalysis.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/EapiAnalysis.java @@ -73,7 +73,7 @@ public class EapiAnalysis { String strEapiID = item.containsKey("eapiId") ? item.get("eapiId").toString() : ""; // 如果获取到EapiID 抛出对应的异常,主要目的是因为eapi的结构调整 if (!StringUtility.isNullOrEmpty(strEapiID)) { - IMetadataContent eapiMetadataContent = eapiMetadataManager.getEapiMetadataContent(strEapiID); + IMetadataContent eapiMetadataContent = eapiMetadataManager.getEapiMetadataContent(strEapiID, item.getOrDefault("eapiCode", "").toString(), item.getOrDefault("eapiName", "").toString(), item.getOrDefault("eapiNameSpace", "").toString()); String eapiJson = eapiMetadataManager.serialize(eapiMetadataContent, PropertyNamingStrategy.UPPER_CAMEL_CASE); eapis.append(eapiJson); diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/FormAnalysis.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/FormAnalysis.java index 606e93de..09433cda 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/FormAnalysis.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/FormAnalysis.java @@ -116,7 +116,7 @@ public class FormAnalysis { if (!useIsolateJs && !StringUtility.isNullOrEmpty(externalComponentUri)) { // 获取组合表单的元数据信息 - String formMetaDataStr = formMetadataManager.getVisualDom(externalComponentUri); + String formMetaDataStr = formMetadataManager.getVisualDom(externalComponentUri, externalComponentCode, externalComponent.getOrDefault("name", "").toString(), externalComponent.getOrDefault("nameSpace", "").toString()); json = SerializeUtility.getInstance().deserialize(formMetaDataStr, FormDOM.class); if (!StringUtility.isNullOrEmpty(formMetaDataStr)) { diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/StateMachineAnalysis.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/StateMachineAnalysis.java index 91bcd4eb..efe64943 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/StateMachineAnalysis.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/StateMachineAnalysis.java @@ -44,7 +44,7 @@ public class StateMachineAnalysis { stateMachines.append(","); } String uri = o.get("uri").toString(); - Object obj = smManager.getStateMachine(uri); + Object obj = smManager.getStateMachine(uri, o.getOrDefault("code", "").toString(), o.getOrDefault("name", "").toString(), o.getOrDefault("nameSpace", "").toString()); String sm_json = smManager.serialize((IMetadataContent) obj); String idStr = o.get("id").toString(); stateMachines.append("\"").append(idStr).append("\":"); diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandsMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandsMetadataManager.java index f78fe91f..05ad002d 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandsMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandsMetadataManager.java @@ -32,13 +32,16 @@ public class CommandsMetadataManager extends BaseMetaDataManager { super(executeEnvironment, isUpdradeTool); } - public WebCommandsMetadata getWebCommands(String id) { + public WebCommandsMetadata getWebCommands(String id, String code, String name, String nameSpace) { GspMetadata webCommandMetadata = getMetadata(() -> { MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); getterMetadataInfo.setId(id); getterMetadataInfo.setMetadataType(MetadataTypeEnum.Command); + getterMetadataInfo.setCode(code); + getterMetadataInfo.setNameSpace(nameSpace); + getterMetadataInfo.setName(name); return getterMetadataInfo; - }, null, this.getDefaultMetadataNotFoundFormatMessage(id, MetadataTypeEnum.Command)); + }, null, null); if (webCommandMetadata == null) { throw new RuntimeException("load webCommand metadata is null,the commandId is " + id); } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/ComponentMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/ComponentMetadataManager.java index bf91c185..15a5d530 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/ComponentMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/ComponentMetadataManager.java @@ -32,13 +32,16 @@ public class ComponentMetadataManager extends BaseMetaDataManager { super(executeEnvironment, isUpdradeTool); } - public WebComponentMetadata getComponentMetadata(String id) { + public WebComponentMetadata getComponentMetadata(String id, String code, String name, String nameSpace) { GspMetadata webComponentMetadata = getMetadata(() -> { MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); getterMetadataInfo.setId(id); + getterMetadataInfo.setCode(code); + getterMetadataInfo.setName(name); + getterMetadataInfo.setNameSpace(nameSpace); getterMetadataInfo.setMetadataType(MetadataTypeEnum.Component); return getterMetadataInfo; - }, null, this.getDefaultMetadataNotFoundFormatMessage(id, MetadataTypeEnum.Component)); + }, null, null); if (webComponentMetadata == null) { throw new RuntimeException("load webComponent metadata is null,the metaDataId is " + id); } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/EapiMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/EapiMetadataManager.java index dce95500..e439300f 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/EapiMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/EapiMetadataManager.java @@ -37,13 +37,16 @@ public class EapiMetadataManager extends BaseMetaDataManager { * * @return */ - public IMetadataContent getEapiMetadataContent(String eapiMetadataId) { + public IMetadataContent getEapiMetadataContent(String eapiMetadataId, String eapiMetadataCode, String eapiMetadataName, String eapiMetadataNameSpace) { GspMetadata eapiMetadata = getMetadata(() -> { MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); getterMetadataInfo.setId(eapiMetadataId); getterMetadataInfo.setMetadataType(MetadataTypeEnum.Eapi); + getterMetadataInfo.setName(eapiMetadataName); + getterMetadataInfo.setCode(eapiMetadataCode); + getterMetadataInfo.setNameSpace(eapiMetadataNameSpace); return getterMetadataInfo; - }, null, this.getDefaultMetadataNotFoundFormatMessage(eapiMetadataId, MetadataTypeEnum.Eapi)); + }, null, null); if (eapiMetadata == null) { throw new RuntimeException("load eapi metadata is null,the metaDataId is " + eapiMetadataId); } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/FormMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/FormMetadataManager.java index a9bf0fae..9cf651fb 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/FormMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/FormMetadataManager.java @@ -48,13 +48,16 @@ public class FormMetadataManager extends BaseMetaDataManager { * @param metaDataId * @return */ - private GspMetadata getFormMetaData(String metaDataId) { + private GspMetadata getFormMetaData(String metaDataId, String code, String name, String nameSpace) { GspMetadata metadata = getMetadata(() -> { MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); getterMetadataInfo.setId(metaDataId); + getterMetadataInfo.setCode(code); + getterMetadataInfo.setName(name); + getterMetadataInfo.setNameSpace(nameSpace); getterMetadataInfo.setMetadataType(MetadataTypeEnum.Frm); return getterMetadataInfo; - }, null, this.getDefaultMetadataNotFoundFormatMessage(metaDataId, MetadataTypeEnum.Frm)); + }, null, null); if (metadata == null) { throw new RuntimeException("load form metadata is null,the metaDataId is " + metaDataId); } @@ -64,8 +67,8 @@ public class FormMetadataManager extends BaseMetaDataManager { /** * 根据元数据ID获取元数据信息 */ - public String getVisualDom(String metadataID) { - GspMetadata metadata = this.getFormMetaData(metadataID); + public String getVisualDom(String metadataID, String code, String name, String nameSpace) { + GspMetadata metadata = this.getFormMetaData(metadataID, code, name, nameSpace); return ((FormMetadataContent) metadata.getContent()).getContents().toString(); } } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/StateMachineMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/StateMachineMetadataManager.java index 5188feb3..de0df811 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/StateMachineMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/StateMachineMetadataManager.java @@ -26,13 +26,16 @@ public class StateMachineMetadataManager extends BaseMetaDataManager { super(executeEnvironment, isUpdradeTool); } - public Object getStateMachine(String id) { + public Object getStateMachine(String id, String code, String name, String nameSpace) { GspMetadata stateMachineMetaData = getMetadata(() -> { MetadataGetterParameter.GetterMetadataInfo getterMetadataInfo = new MetadataGetterParameter.GetterMetadataInfo(); getterMetadataInfo.setId(id); + getterMetadataInfo.setCode(code); + getterMetadataInfo.setName(name); + getterMetadataInfo.setNameSpace(nameSpace); getterMetadataInfo.setMetadataType(MetadataTypeEnum.StateMachine); return getterMetadataInfo; - }, null, this.getDefaultMetadataNotFoundFormatMessage(id, MetadataTypeEnum.StateMachine)); + }, null, null); if (stateMachineMetaData == null) { throw new RuntimeException("load statemachine metadata is null,the metaDataId is " + id); } -- Gitee From 946b490a27f779ed4fd97cbc70b93ed55b25f6c9 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Wed, 12 Apr 2023 16:39:08 +0800 Subject: [PATCH 30/31] =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edp/web/common/metadata/MetadataGetterParameter.java | 3 ++- .../inspur/edp/web/common/metadata/WebMetadataUri.java | 9 ++++++++- .../metadatamanager/CommandsMetadataManager.java | 2 +- .../metadatamanager/ComponentMetadataManager.java | 2 +- .../jitengine/metadatamanager/EapiMetadataManager.java | 2 +- .../jitengine/metadatamanager/FormMetadataManager.java | 2 +- .../metadatamanager/StateMachineMetadataManager.java | 2 +- 7 files changed, 15 insertions(+), 7 deletions(-) diff --git a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataGetterParameter.java b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataGetterParameter.java index 15333d4d..14bfac2b 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataGetterParameter.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/metadata/MetadataGetterParameter.java @@ -18,6 +18,7 @@ package com.inspur.edp.web.common.metadata; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; import com.inspur.edp.web.common.customexception.WebCustomException; +import com.inspur.edp.web.common.utility.StringUtility; import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -103,7 +104,7 @@ public class MetadataGetterParameter implements Serializable { this.getTargetMetadataInfo().getCode(), this.getTargetMetadataInfo().getName(), this.getTargetMetadataInfo().getMetadataType().getCode(), - this.getTargetMetadataInfo().getNameSpace(), this.getTargetMetadataNotFoundMessage()); + this.getTargetMetadataInfo().getNameSpace(), this.getTargetMetadataNotFoundMessage()); } /** diff --git a/web-common/src/main/java/com/inspur/edp/web/common/metadata/WebMetadataUri.java b/web-common/src/main/java/com/inspur/edp/web/common/metadata/WebMetadataUri.java index 4f891018..6fa79c9c 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/metadata/WebMetadataUri.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/metadata/WebMetadataUri.java @@ -33,6 +33,11 @@ public class WebMetadataUri extends MetadataURI { */ private String customMetadataNotFoundMessage; + /** + * 是否使用默认的自定义提示信息 + */ + private boolean useCustomMetadataNotFoundMessage = false; + /** * 元数据关联名称 */ @@ -45,9 +50,11 @@ public class WebMetadataUri extends MetadataURI { @Override public String getURIDesc() { - if (!StringUtility.isNullOrEmpty(this.getCustomMetadataNotFoundMessage())) { + // 如果强制使用自定义的异常提示 或者 code参数为空 且自定义异常提示信息不为空 + if ((this.isUseCustomMetadataNotFoundMessage() || StringUtility.isNullOrEmpty(this.getCode())) && StringUtility.isNotNullOrEmpty(this.getCustomMetadataNotFoundMessage())) { return this.getCustomMetadataNotFoundMessage(); } + return super.getURIDesc(); } } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandsMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandsMetadataManager.java index 05ad002d..ae280ae4 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandsMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/CommandsMetadataManager.java @@ -41,7 +41,7 @@ public class CommandsMetadataManager extends BaseMetaDataManager { getterMetadataInfo.setNameSpace(nameSpace); getterMetadataInfo.setName(name); return getterMetadataInfo; - }, null, null); + }, null, this.getDefaultMetadataNotFoundFormatMessage(id, MetadataTypeEnum.Command)); if (webCommandMetadata == null) { throw new RuntimeException("load webCommand metadata is null,the commandId is " + id); } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/ComponentMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/ComponentMetadataManager.java index 15a5d530..6548a316 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/ComponentMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/ComponentMetadataManager.java @@ -41,7 +41,7 @@ public class ComponentMetadataManager extends BaseMetaDataManager { getterMetadataInfo.setNameSpace(nameSpace); getterMetadataInfo.setMetadataType(MetadataTypeEnum.Component); return getterMetadataInfo; - }, null, null); + }, null, this.getDefaultMetadataNotFoundFormatMessage(id, MetadataTypeEnum.Component)); if (webComponentMetadata == null) { throw new RuntimeException("load webComponent metadata is null,the metaDataId is " + id); } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/EapiMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/EapiMetadataManager.java index e439300f..c9cebf1d 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/EapiMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/EapiMetadataManager.java @@ -46,7 +46,7 @@ public class EapiMetadataManager extends BaseMetaDataManager { getterMetadataInfo.setCode(eapiMetadataCode); getterMetadataInfo.setNameSpace(eapiMetadataNameSpace); return getterMetadataInfo; - }, null, null); + }, null, this.getDefaultMetadataNotFoundFormatMessage(eapiMetadataId, MetadataTypeEnum.Eapi)); if (eapiMetadata == null) { throw new RuntimeException("load eapi metadata is null,the metaDataId is " + eapiMetadataId); } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/FormMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/FormMetadataManager.java index 9cf651fb..25703455 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/FormMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/FormMetadataManager.java @@ -57,7 +57,7 @@ public class FormMetadataManager extends BaseMetaDataManager { getterMetadataInfo.setNameSpace(nameSpace); getterMetadataInfo.setMetadataType(MetadataTypeEnum.Frm); return getterMetadataInfo; - }, null, null); + }, null, this.getDefaultMetadataNotFoundFormatMessage(metaDataId, MetadataTypeEnum.Frm)); if (metadata == null) { throw new RuntimeException("load form metadata is null,the metaDataId is " + metaDataId); } diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/StateMachineMetadataManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/StateMachineMetadataManager.java index de0df811..1dd78ef1 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/StateMachineMetadataManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadatamanager/StateMachineMetadataManager.java @@ -35,7 +35,7 @@ public class StateMachineMetadataManager extends BaseMetaDataManager { getterMetadataInfo.setNameSpace(nameSpace); getterMetadataInfo.setMetadataType(MetadataTypeEnum.StateMachine); return getterMetadataInfo; - }, null, null); + }, null, this.getDefaultMetadataNotFoundFormatMessage(id, MetadataTypeEnum.StateMachine)); if (stateMachineMetaData == null) { throw new RuntimeException("load statemachine metadata is null,the metaDataId is " + id); } -- Gitee From 136f890b14985ed5046fa5354bae1474a0932dc2 Mon Sep 17 00:00:00 2001 From: guozhiqi Date: Wed, 12 Apr 2023 17:24:51 +0800 Subject: [PATCH 31/31] =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../formjsonfilegenerator/FrmJsonFileGenerator.java | 2 +- .../edp/web/common/utility/StringUtility.java | 13 +++++++++++++ .../inspur/edp/web/jitengine/JITEngineManager.java | 3 ++- .../jitengine/metadataanalysis/EapiAnalysis.java | 7 +++++-- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java b/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java index 305165bc..723b7389 100644 --- a/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java +++ b/runtime-core/src/main/java/com/inspur/edp/web/jitruntimebuild/core/formjsonfilegenerator/FrmJsonFileGenerator.java @@ -306,7 +306,7 @@ public class FrmJsonFileGenerator extends AbstractFormJsonFileGenerator implemen // // // Step 4: Resolve eapi EapiAnalysis eapiAnalysis = new EapiAnalysis(this.getExecuteEnvironment(), this.isUpdradeTool()); - eapiAnalysis.resolveEapi(formDom, formMetadataName, targetStorageBasePath, projectPath, webDevPath); + eapiAnalysis.resolveEapi(formDom, formMetadataName, targetStorageBasePath, projectPath, webDevPath, formMetadata.getHeader().getNameSpace()); // // // Step 5: Resolve command service CommandServiceAnalysis.resolveCommandService(formDom, relativePath, formServiceBasePath, webDevPath, this.getExecuteEnvironment(), this.isUpdradeTool()); diff --git a/web-common/src/main/java/com/inspur/edp/web/common/utility/StringUtility.java b/web-common/src/main/java/com/inspur/edp/web/common/utility/StringUtility.java index 8c037af8..74bd4eaa 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/utility/StringUtility.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/utility/StringUtility.java @@ -215,6 +215,19 @@ public class StringUtility { } } + /** + * 使用默认值 + * @param source + * @param defaultValue + * @return + */ + public static String getOrDefault(String source, String defaultValue) { + if (isNullOrEmpty(source)) { + return isNullOrEmpty(defaultValue) ? "" : defaultValue; + } + return source; + } + /** * 将null 转换成空字符串 * diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java index 14556b56..d692ca09 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/JITEngineManager.java @@ -344,7 +344,8 @@ public class JITEngineManager { if (!resolveFormMetadataItem.getCalculateIsDynamicForm()) { // Resolve Eapi EapiAnalysis eapiAnalysis = new EapiAnalysis(ExecuteEnvironment.Design, false); - eapiAnalysis.resolveEapi(formDom, formMetadataName, targetStorageBasePath, projectPath, webDevPath); + String formNameSpace = resolveFormMetadataItem.getGspMetadata() == null ? "" : resolveFormMetadataItem.getGspMetadata().getHeader().getNameSpace(); + eapiAnalysis.resolveEapi(formDom, formMetadataName, targetStorageBasePath, projectPath, webDevPath, formNameSpace); } // Resolve Command Service diff --git a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/EapiAnalysis.java b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/EapiAnalysis.java index 8804d8b3..d8571bdb 100644 --- a/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/EapiAnalysis.java +++ b/web-form-jitengine/src/main/java/com/inspur/edp/web/jitengine/metadataanalysis/EapiAnalysis.java @@ -53,7 +53,7 @@ public class EapiAnalysis { * @param webDevPath webdev目录所在路径 */ public void resolveEapi(FormDOM json, String formMetadataName, String targetStoragePath, String projectPath, - String webDevPath) { + String webDevPath, String nameSpace) { if (json == null || json.getModule() == null || json.getModule().getCode() == null || StringUtility.isNullOrEmpty(targetStoragePath) || json.getModule().getSchemas() == null || json.getModule().getSchemas().size() == 0) { @@ -73,7 +73,10 @@ public class EapiAnalysis { String strEapiID = item.containsKey("eapiId") ? item.get("eapiId").toString() : ""; // 如果获取到EapiID 抛出对应的异常,主要目的是因为eapi的结构调整 if (!StringUtility.isNullOrEmpty(strEapiID)) { - IMetadataContent eapiMetadataContent = eapiMetadataManager.getEapiMetadataContent(strEapiID, item.getOrDefault("eapiCode", "").toString(), item.getOrDefault("eapiName", "").toString(), item.getOrDefault("eapiNameSpace", "").toString()); + IMetadataContent eapiMetadataContent = eapiMetadataManager.getEapiMetadataContent(strEapiID, + item.getOrDefault("eapiCode", "").toString(), + item.getOrDefault("eapiName", "").toString(), + StringUtility.getOrDefault(item.getOrDefault("eapiNameSpace", "").toString(), nameSpace)); String eapiJson = eapiMetadataManager.serialize(eapiMetadataContent, PropertyNamingStrategy.UPPER_CAMEL_CASE); eapis.append(eapiJson); -- Gitee