diff --git a/approval-format/web-approval-format-rpc/src/main/java/com/inspur/edp/web/approvalformat/rpc/rpcservice/ApprovalFormatRpcServiceImpl.java b/approval-format/web-approval-format-rpc/src/main/java/com/inspur/edp/web/approvalformat/rpc/rpcservice/ApprovalFormatRpcServiceImpl.java index 1358514818af39c2367f2114d6831b104de20292..5c9ed1a7f2f497417560c20a0fdcd81ab9859aea 100644 --- a/approval-format/web-approval-format-rpc/src/main/java/com/inspur/edp/web/approvalformat/rpc/rpcservice/ApprovalFormatRpcServiceImpl.java +++ b/approval-format/web-approval-format-rpc/src/main/java/com/inspur/edp/web/approvalformat/rpc/rpcservice/ApprovalFormatRpcServiceImpl.java @@ -33,6 +33,7 @@ import org.springframework.beans.factory.annotation.Autowired; import java.io.IOException; import java.text.MessageFormat; +import java.time.Duration; import java.util.List; /** @@ -47,7 +48,7 @@ public class ApprovalFormatRpcServiceImpl implements IApprovalFormatRpcService { @Override public IEntityData getEntityDataByBizEntityId(String dataId, String bizEntityId) { - SpringBeanUtils.getBean(IBefSessionManager.class).createSession(); + SpringBeanUtils.getBean(IBefSessionManager.class).createSession(Duration.ofMinutes(2)); try { IStandardLcp lcp = null; @@ -68,7 +69,7 @@ public class ApprovalFormatRpcServiceImpl implements IApprovalFormatRpcService { @Override public List queryEntityData(String bizEntityId) { - SpringBeanUtils.getBean(IBefSessionManager.class).createSession(); + SpringBeanUtils.getBean(IBefSessionManager.class).createSession(Duration.ofMinutes(2)); try { IStandardLcp lcp = null; GspMetadata bizEntityMetadata = this.customizationService.getMetadata(bizEntityId); @@ -107,7 +108,7 @@ public class ApprovalFormatRpcServiceImpl implements IApprovalFormatRpcService { MessageFormat.format("{0}", new Object[]{e.getMessage()})); } } - SpringBeanUtils.getBean(IBefSessionManager.class).createSession(); + SpringBeanUtils.getBean(IBefSessionManager.class).createSession(Duration.ofMinutes(2)); try { IStandardLcp lcp = null; diff --git a/pom.xml b/pom.xml index d9f87fe994c6d7bcc9a45b526b2e325fbbcc539c..ff31ac8e1f39989859ed1af282d47c7ac60b4378 100644 --- a/pom.xml +++ b/pom.xml @@ -60,6 +60,8 @@ form-process web-formmetadata-relycheck + web-ide-rpc-service + web-metadata-replication-core diff --git a/toout.bat b/toout.bat index 01e525dcb5b80aacc5a8210873b7e5a67fcc5503..b900efba7def390c04fd831e2492fc119ab82ed5 100644 --- a/toout.bat +++ b/toout.bat @@ -61,6 +61,7 @@ COPY web-frontendproject-api\target\web-jitengine-frontendproject-api-%version%. REM COPY web-ide-api\target\web-ide-api-%version%.jar .\out\server\platform\common\libs\web-ide-api.jar COPY web-ide-webapi\target\ide-config-webapi-%version%.jar .\out\server\platform\dev\main\libs\ide-config-webapi.jar +COPY web-ide-rpc-service\target\web-ide-rpc-service-%version%.jar .\out\server\platform\dev\main\libs\web-ide-rpc-service.jar ::pause ::pause 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 c315ebd720ae162a3e4f079925706177348d330c..dab79beff3f62bb9fcf607a1c51e6d6d2cece758 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 @@ -884,21 +884,29 @@ public class FileUtility { */ private static void getRelativePaths(Path root, Path currentDir, List relativePaths) throws IOException { // 获取当前目录下的所有文件和目录 - DirectoryStream stream = Files.newDirectoryStream(currentDir); - - for (Path entry : stream) { - // 构建相对路径 - Path relativePath = root.relativize(entry); - // 如果是目录,则递归遍历 - if (Files.isDirectory(entry)) { - getRelativePaths(root, entry, relativePaths); - } else { - relativePaths.add(relativePath); + DirectoryStream stream = null; + try { + stream = Files.newDirectoryStream(currentDir); + for (Path entry : stream) { + // 构建相对路径 + Path relativePath = root.relativize(entry); + // 如果是目录,则递归遍历 + if (Files.isDirectory(entry)) { + getRelativePaths(root, entry, relativePaths); + } else { + relativePaths.add(relativePath); + } + } + } finally { + // 1. 先判空,避免NPE;2. 捕获close()的异常 + if (stream != null) { + try{ + stream.close(); + } catch (IOException e) { + WebLogger.Instance.error(e); + } } } - - // 关闭流 - stream.close(); } public static List getRelativePaths(String rootPath) { 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 b932838bfeead204c9b39d8c6dc00471b7a6661b..eacc765d12890afbdbd367773120e938fe0018b1 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 @@ -162,7 +162,7 @@ public final class MetadataUtility { // 如果在升级工具中执行 if (isInUpgradeTool) { - if (MetadataUtilityWithRuntimeRpc.hasCustomizationServerServiceInstance()) { + if (MetadataUtilityWithRuntimeRpc.hasCustomizationServiceInstance()) { return MetadataUtilityWithRuntimeRpc.getMetadata(targetMetadataInfo.getId()); } else { // 如果获取不到 那么设定执行运行时获取 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 index 161e2c9d88d31ce5f76e96984eafd7a00efa122e..ecfc8e024220607ef075695119f77909cbb7038e 100644 --- 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 @@ -17,7 +17,7 @@ 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 com.inspur.edp.metadata.rtcustomization.api.CustomizationService; import io.iec.edp.caf.commons.utils.SpringBeanUtils; /** @@ -30,8 +30,8 @@ class MetadataUtilityWithRuntimeRpc { * * @return */ - public static boolean hasCustomizationServerServiceInstance() { - return CustomizationServerServiceInstance.get() != null; + public static boolean hasCustomizationServiceInstance() { + return CustomizationServiceInstance.get() != null; } /** @@ -42,15 +42,15 @@ class MetadataUtilityWithRuntimeRpc { * @return */ public static GspMetadata getMetadata(String medaDataId) { - return CustomizationServerServiceInstance.get().getMetadata(medaDataId); + return CustomizationServiceInstance.get().getMetadata(medaDataId); } /** * 运行时元数据服务的rpc */ - private static class CustomizationServerServiceInstance { - public static CustomizationServerService get() { - return SpringBeanUtils.getBean(CustomizationServerService.class); + 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/utility/CommandExecuteInterceptor.java b/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandExecuteInterceptor.java index 3855d37074a7fb36ec29cc4cf5b052c275e07f84..41e654b4952d5d166315bb31bf2ab5b5824854a0 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandExecuteInterceptor.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/utility/CommandExecuteInterceptor.java @@ -75,6 +75,7 @@ public class CommandExecuteInterceptor extends Thread { @Override public void run() { BufferedReader br = null; + InputStreamReader inputStreamReader = null; try { IdeLogUtils ideLogUtils = new IdeLogUtils(); @@ -82,7 +83,7 @@ public class CommandExecuteInterceptor extends Thread { if (SystemUtils.IS_OS_WINDOWS) { charset = Charset.forName("GBK"); } - InputStreamReader inputStreamReader = new InputStreamReader(this.inputStream, charset); + inputStreamReader = new InputStreamReader(this.inputStream, charset); //读取进程输入流中的内容 String line = null; br = new BufferedReader(inputStreamReader); @@ -171,10 +172,12 @@ public class CommandExecuteInterceptor extends Thread { WebLogger.Instance.error(e); } finally { try { - this.inputStream.close(); if (br != null) { br.close(); } + if (inputStreamReader != null) { + inputStreamReader.close(); + } } catch (IOException ex) { WebLogger.Instance.error(ex); } diff --git a/web-common/src/main/java/com/inspur/edp/web/common/utility/IdeLogUtils.java b/web-common/src/main/java/com/inspur/edp/web/common/utility/IdeLogUtils.java index 10bd88c7ceeee1ee3ca72aefc561695e485bad1e..1336ce97850f054c1b315cf19d0845d4f9e64728 100644 --- a/web-common/src/main/java/com/inspur/edp/web/common/utility/IdeLogUtils.java +++ b/web-common/src/main/java/com/inspur/edp/web/common/utility/IdeLogUtils.java @@ -1,28 +1,26 @@ package com.inspur.edp.web.common.utility; -import com.inspur.edp.lcm.metadata.inner.api.IdeLogService; +import com.inspur.edp.web.common.customexception.WebCustomException; import com.inspur.edp.web.common.logger.WebLogger; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import io.iec.edp.caf.rpc.api.service.RpcClient; + +import java.util.LinkedHashMap; public class IdeLogUtils { - private IdeLogService ideLogService; + private static RpcClient rpcClient = SpringBeanUtils.getBean(RpcClient.class); public IdeLogUtils() { - try { - Class.forName("com.inspur.edp.lcm.metadata.inner.api.utils.IdeLogUtils"); - ideLogService = com.inspur.edp.lcm.metadata.inner.api.utils.IdeLogUtils.getIdeLogService(); - } catch (ClassNotFoundException e) { - ideLogService = null; - WebLogger.Instance.warn("com.inspur.edp.lcm.metadata.inner.api.utils.IdeLogUtils not found"); - } } - public void pushLog(String var1, String var2) { - if (ideLogService != null) { - try { - ideLogService.pushLog(var1, var2); - } catch (Exception e) { - WebLogger.Instance.warn("Failed to push log: " + e.getMessage()); - } + public void pushLog(String log, String userId) { + try { + LinkedHashMap params = new LinkedHashMap<>(); + params.put("log", log); + params.put("userId", userId); + rpcClient.invoke(Void.TYPE, "com.inspur.edp.web.rpc.service.idelog.WebIdeLogService.pushLog", "main", params, null); + } catch (Exception e) { + WebLogger.Instance.warn("Failed to push log: " + e.getMessage()); } } } diff --git a/web-designschema-api/src/main/java/com/inspur/edp/web/designschema/api/webservice/DesignSchemaWebService.java b/web-designschema-api/src/main/java/com/inspur/edp/web/designschema/api/webservice/DesignSchemaWebService.java index 88dfc72359240e868985831761578a0cc99a509e..c09c0d611e8e8d767bdf6b5a46efc22ce464cd95 100644 --- a/web-designschema-api/src/main/java/com/inspur/edp/web/designschema/api/webservice/DesignSchemaWebService.java +++ b/web-designschema-api/src/main/java/com/inspur/edp/web/designschema/api/webservice/DesignSchemaWebService.java @@ -34,6 +34,7 @@ public interface DesignSchemaWebService /** * 创建designschema + * * @param content * @return */ 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 6f05c3a2aa1de47848f3f36564ec66c93779af24..e9b5b9e3b3e0cad35bdd943e7ef6709e03bd35b7 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 @@ -60,8 +60,8 @@ public class DesignSchemaWebServiceImpl implements DesignSchemaWebService { SchemaBuilder schemaBuilder = new SchemaBuilder(); Schema schema = schemaBuilder.buildWithScene(vm, scene, isRuntime); - - return SerializeUtility.getInstance().valueToJson(schema, PropertyNamingStrategy.LOWER_CAMEL_CASE).toString(); + String result=SerializeUtility.getInstance().valueToJson(schema, PropertyNamingStrategy.LOWER_CAMEL_CASE).toString(); + return result; } catch (WebCustomException e) { WebLogger.Instance.error(e, DesignSchemaWebServiceImpl.class.getName()); throw e; diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/filter/LowCodeLanguagePackageFilter.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/filter/LowCodeLanguagePackageFilter.java index d3f06141555df949af25b04d102d8923a3a15312..abf0631c601cebf0a94e9affe0611c7fc30f4882 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/filter/LowCodeLanguagePackageFilter.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/filter/LowCodeLanguagePackageFilter.java @@ -30,6 +30,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; +import com.inspur.edp.web.common.customexception.WebCustomException; import io.iec.edp.caf.boot.context.CAFContext; import io.iec.edp.caf.commons.exception.CAFRuntimeException; import io.iec.edp.caf.commons.utils.SpringBeanUtils; @@ -299,7 +300,7 @@ public class LowCodeLanguagePackageFilter extends OncePerRequestFilter { JsonNode mergedJsonNodes = mergeJsonNodes(originalJson, uiLanguagePackageJson); return objectMapper.writeValueAsString(mergedJsonNodes); } catch (JsonProcessingException e) { - throw new CAFRuntimeException("pfcommon", "", "", e); // todo: 换成多语的抛异常方式。 + throw new WebCustomException(e); // todo: 换成多语的抛异常方式。 } } diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formformat/FormFormatHandler.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formformat/FormFormatHandler.java index 82726ee7a2664a1b72aeb2472b0eeaf3eb0e2638..844442e6d1b324fb8f525f118daa9eb365186c3b 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formformat/FormFormatHandler.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formformat/FormFormatHandler.java @@ -28,6 +28,7 @@ public abstract class FormFormatHandler { public abstract void pushFormFormat(GspMetadata formMetadata, String formatType, String formPath); + @Deprecated public abstract void pushRtcFormFormat(GspMetadata formMetadata, String formatType, DimensionExtendEntity dimension); public abstract void pushNoCodeFormFormat(GspMetadata formMetadata, String formatType); diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formformat/FormFormatRtcUtility.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formformat/FormFormatRtcUtility.java new file mode 100644 index 0000000000000000000000000000000000000000..5cce483116120fd8803d772a544f9fd69c36f97c --- /dev/null +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formformat/FormFormatRtcUtility.java @@ -0,0 +1,38 @@ +package com.inspur.edp.web.formmetadata.formformat; + +import com.inspur.edp.formserver.viewmodel.formentity.VoFormModel; +import com.inspur.edp.metadata.rtcustomization.api.entity.DimensionExtendEntity; +import com.inspur.edp.web.common.customexception.WebCustomException; +import io.iec.edp.caf.commons.utils.SpringBeanUtils; +import io.iec.edp.caf.rpc.api.service.RpcClient; + +import java.util.LinkedHashMap; + +public class FormFormatRtcUtility { + + public static boolean canPushFormFormat(String voId) { + try { + LinkedHashMap params = new LinkedHashMap<>(); + params.put("voId", voId); + RpcClient rpcClient = SpringBeanUtils.getBean(RpcClient.class); + return rpcClient.invoke(Boolean.TYPE, "com.inspur.edp.rtc.template.api.rpc.RtcTemplateRpcService.canPushFormFormat", "Bcc", params, null); + } catch (Exception e) { + throw new WebCustomException("failed to invoke the Rpc interface: com.inspur.edp.rtc.template.api.rpc.RtcTemplateRpcService.canPushFormFormat", e); + } + } + + public static void buildRtcFormFormat(VoFormModel voFormModel, DimensionExtendEntity dimension, String voId, String bizObjectID) { + try { + LinkedHashMap params = new LinkedHashMap<>(); + params.put("voFormModel", voFormModel); + params.put("dimensionExtendEntity", dimension); + params.put("voId", voId); + params.put("businessObjectId", bizObjectID); + RpcClient rpcClient = SpringBeanUtils.getBean(RpcClient.class); + rpcClient.invoke(Void.TYPE, "com.inspur.edp.rtc.template.api.rpc.RtcTemplateRpcService.buildRtcFormFormat", "Bcc", params, null); + } catch (Exception e) { + throw new WebCustomException("failed to invoke the Rpc interface: com.inspur.edp.rtc.template.api.rpc.RtcTemplateRpcService.buildRtcFormFormat", e); + } + + } +} diff --git a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formformat/handler/WFFormFormatMobileHandler.java b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formformat/handler/WFFormFormatMobileHandler.java index 95bd4643df32b1265fe2e59ba0cad4c06a9d7202..7c3d375e85e6facf97b2f8ced550909a390dae0f 100644 --- a/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formformat/handler/WFFormFormatMobileHandler.java +++ b/web-form-metadata/src/main/java/com/inspur/edp/web/formmetadata/formformat/handler/WFFormFormatMobileHandler.java @@ -2,8 +2,6 @@ package com.inspur.edp.web.formmetadata.formformat.handler; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ArrayNode; -import com.inspur.edp.customize.form.api.RuntimeCheckVoFormVariableService; -import com.inspur.edp.customize.service.VoRuntimeBuildFormFormatService; import com.inspur.edp.formserver.viewmodel.formentity.*; import com.inspur.edp.formserver.vmapi.formconfig.VoBuildFormFormatService; import com.inspur.edp.lcm.metadata.api.entity.GspMetadata; @@ -14,6 +12,7 @@ import com.inspur.edp.lcm.metadata.api.service.MetadataService; import com.inspur.edp.metadata.rtcustomization.api.entity.DimensionExtendEntity; import com.inspur.edp.web.common.utility.StringUtility; import com.inspur.edp.web.formmetadata.formformat.FormFormatHandler; +import com.inspur.edp.web.formmetadata.formformat.FormFormatRtcUtility; import com.inspur.edp.web.formmetadata.metadata.FormMetadataContent; import io.iec.edp.caf.businessobject.api.entity.DevBasicBoInfo; import io.iec.edp.caf.businessobject.api.service.DevBasicInfoService; @@ -28,12 +27,13 @@ import java.util.*; /** * 向vo推送按钮、字段、命令,用于权限控制 */ -public class WFFormFormatMobileHandler extends FormFormatHandler { +public class WFFormFormatMobileHandler extends FormFormatHandler { - private final List controlsWithButton = Arrays.asList("ListView","Button","ButtonGroup","Card","Section"); + private final List controlsWithButton = Arrays.asList("ListView", "Button", "ButtonGroup", "Card", "Section"); /** * 表单类型 + * * @return */ @Override @@ -63,22 +63,20 @@ public class WFFormFormatMobileHandler extends FormFormatHandler { FormMetadataContent formContents = (FormMetadataContent) formMetadata.getContent(); JsonNode content = formContents.getContents(); String voId = content.at("/module/schemas/0/id").textValue(); - RuntimeCheckVoFormVariableService runtimeCheckVoFormVariableService = SpringBeanUtils.getBean(RuntimeCheckVoFormVariableService.class); - boolean isPushRtcForm = runtimeCheckVoFormVariableService.checkVoFormVariable(voId); + boolean isPushRtcForm = FormFormatRtcUtility.canPushFormFormat(voId); if (!isPushRtcForm) { return; } - VoRuntimeBuildFormFormatService voRuntimeBuildFormFormatService = SpringBeanUtils.getBean(VoRuntimeBuildFormFormatService.class); - VoFormModel voFormModel = getVoFormModel(formMetadata, formatType, null,"LCDP"); - String dim1 = StringUtils.isNotBlank(dimension.getFirstDimension())?dimension.getFirstDimension():"public"; - String dim2 = StringUtils.isNotBlank(dimension.getSecondDimension())?dimension.getSecondDimension():"public"; + VoFormModel voFormModel = getVoFormModel(formMetadata, formatType, null, "LCDP"); + String dim1 = StringUtils.isNotBlank(dimension.getFirstDimension()) ? dimension.getFirstDimension() : "public"; + String dim2 = StringUtils.isNotBlank(dimension.getSecondDimension()) ? dimension.getSecondDimension() : "public"; generateParameters(voFormModel.getUrlParameters(), "dim1", "维度一", dim1); generateParameters(voFormModel.getUrlParameters(), "dim2", "维度二", dim2); generateParameters(voFormModel.getUrlParameters(), "metadataId", "元数据id", dimension.getBasicMetadataId()); - voRuntimeBuildFormFormatService.buildFormFormat(voFormModel, dimension, voId, formMetadata.getHeader().getBizobjectID()); + FormFormatRtcUtility.buildRtcFormFormat(voFormModel, dimension, voId, formMetadata.getHeader().getBizobjectID()); } @Override @@ -135,6 +133,7 @@ public class WFFormFormatMobileHandler extends FormFormatHandler { /** * 获取实体信息 + * * @param formContent * @return */ @@ -167,39 +166,38 @@ public class WFFormFormatMobileHandler extends FormFormatHandler { } - - /** * 提取按钮 + * * @param formContent 表单内容 * @return 按钮信息 */ @Override - public List getButtons(JsonNode formContent){ + public List getButtons(JsonNode formContent) { // 递归找Button JsonNode componentArr = formContent.at("/module/components"); JsonNode viewmodelArr = formContent.at("/module/viewmodels"); - List buttonGroupList = new ArrayList<>(); + List buttonGroupList = new ArrayList<>(); List cardPageviewModelIdList = new ArrayList<>(); - componentArr.forEach(component->{ - String componentType = getValue(component,"componentType",null); - String pageType = getValue(component,"pageType",null); - String viewModelId = getValue(component,"viewModel",null); + componentArr.forEach(component -> { + String componentType = getValue(component, "componentType", null); + String pageType = getValue(component, "pageType", null); + String viewModelId = getValue(component, "viewModel", null); //找到卡片页面的视图模型 - if( "Page".equals(componentType) && "Card".equals(pageType) && StringUtils.isNotBlank(viewModelId)){ + if ("Page".equals(componentType) && "Card".equals(pageType) && StringUtils.isNotBlank(viewModelId)) { cardPageviewModelIdList.add(viewModelId); } }); - for(JsonNode component :componentArr){ - String viewModelId = getValue(component,"viewModel",null); - JsonNode parentViewModel = findParentViewModelId( viewmodelArr, viewModelId); + for (JsonNode component : componentArr) { + String viewModelId = getValue(component, "viewModel", null); + JsonNode parentViewModel = findParentViewModelId(viewmodelArr, viewModelId); //只提取卡片页面及其子组件 - if( cardPageviewModelIdList.contains(getValue(parentViewModel,"id",null))){ + if (cardPageviewModelIdList.contains(getValue(parentViewModel, "id", null))) { searchComponentsForButton(component, buttonGroupList); } } @@ -207,16 +205,16 @@ public class WFFormFormatMobileHandler extends FormFormatHandler { return buttonGroupList; } - private JsonNode findParentViewModelId(JsonNode viewmodelArr,String curViewmodelId){ + private JsonNode findParentViewModelId(JsonNode viewmodelArr, String curViewmodelId) { JsonNode result = null; - if(StringUtils.isNotBlank(curViewmodelId) ){ - for(JsonNode viewmodel :viewmodelArr){ - if(curViewmodelId.equals(getValue(viewmodel,"id",null))){ + if (StringUtils.isNotBlank(curViewmodelId)) { + for (JsonNode viewmodel : viewmodelArr) { + if (curViewmodelId.equals(getValue(viewmodel, "id", null))) { result = viewmodel; - String parentViewModelId = getValue(viewmodel,"parent",null); - if(StringUtils.isNotBlank(parentViewModelId)){ - JsonNode parentViewModel = findParentViewModelId( viewmodelArr, parentViewModelId); - if(parentViewModel != null ){ + String parentViewModelId = getValue(viewmodel, "parent", null); + if (StringUtils.isNotBlank(parentViewModelId)) { + JsonNode parentViewModel = findParentViewModelId(viewmodelArr, parentViewModelId); + if (parentViewModel != null) { result = parentViewModel; } @@ -230,6 +228,7 @@ public class WFFormFormatMobileHandler extends FormFormatHandler { /** * 提取方法 + * * @param formContent * @return */ @@ -237,41 +236,41 @@ public class WFFormFormatMobileHandler extends FormFormatHandler { // 1.遍历页面组件 JsonNode componentArr = formContent.at("/module/components"); String cardViewModelId = null; - for(JsonNode component:componentArr){ - String componentType = getValue(component,"componentType",null); - String pageType = getValue(component,"pageType",null); + for (JsonNode component : componentArr) { + String componentType = getValue(component, "componentType", null); + String pageType = getValue(component, "pageType", null); //找到卡片页面 - if( "Page".equals(componentType) && "Card".equals(pageType)){ - cardViewModelId = getValue(component,"viewModel",""); + if ("Page".equals(componentType) && "Card".equals(pageType)) { + cardViewModelId = getValue(component, "viewModel", ""); break; } } List methodGroupList = new ArrayList<>(); - if(StringUtils.isNotBlank(cardViewModelId)){ + if (StringUtils.isNotBlank(cardViewModelId)) { JsonNode viewModelArr = formContent.at("/module/viewmodels"); //2.遍历视图模型 - for(JsonNode viewModel:viewModelArr){ - String viewModelId = getValue(viewModel,"id",null); - if(StringUtils.isNotBlank(viewModelId) && cardViewModelId.equals(viewModelId)){ + for (JsonNode viewModel : viewModelArr) { + String viewModelId = getValue(viewModel, "id", null); + if (StringUtils.isNotBlank(viewModelId) && cardViewModelId.equals(viewModelId)) { JsonNode commands = viewModel.get("commands"); //3.遍历命令 - if(commands != null && commands.size() > 0){ - commands.forEach(command->{ + if (commands != null && commands.size() > 0) { + commands.forEach(command -> { MethodGroup methodGroup = new MethodGroup(); - methodGroup.setId(getValue(command,"id",null)); - methodGroup.setMethodCode(getValue(command,"code",null)); - methodGroup.setMethodName(getValue(command,"name",null)); + methodGroup.setId(getValue(command, "id", null)); + methodGroup.setMethodCode(getValue(command, "code", null)); + methodGroup.setMethodName(getValue(command, "name", null)); //4.遍历命令参数 JsonNode params = command.get("params"); - if(params != null && params.size() > 0){ + if (params != null && params.size() > 0) { List methodParamList = new ArrayList<>(); - params.forEach(param->{ + params.forEach(param -> { MethodParam methodParam = new MethodParam(); - methodParam.setCode(getValue(param,"name",null)); - methodParam.setName(getValue(param,"shownName",null)); + methodParam.setCode(getValue(param, "name", null)); + methodParam.setName(getValue(param, "shownName", null)); methodParam.setValue(null); methodParamList.add(methodParam); @@ -292,25 +291,26 @@ public class WFFormFormatMobileHandler extends FormFormatHandler { /** * 查找带按钮的组件 - * @param root 页面组件 + * + * @param root 页面组件 * @param buttonGroupList 按钮组列表 */ private void searchComponentsForButton(JsonNode root, List buttonGroupList) { - if(root.isArray()) { + if (root.isArray()) { for (JsonNode jsonNode : root) { searchComponentsForButton(jsonNode, buttonGroupList); } } - if(root.isObject()){ + if (root.isObject()) { JsonNode type = root.get("type"); - if(type != null && controlsWithButton.contains(type.asText())){ + if (type != null && controlsWithButton.contains(type.asText())) { this.findButtons(root, buttonGroupList); - }else { + } else { Iterator fieldNames = root.fieldNames(); - while(fieldNames.hasNext()) { + while (fieldNames.hasNext()) { String fieldName = fieldNames.next(); JsonNode fieldValue = root.get(fieldName); - if(fieldValue.isArray() || fieldValue.isObject()){ + if (fieldValue.isArray() || fieldValue.isObject()) { searchComponentsForButton(fieldValue, buttonGroupList); } } @@ -320,13 +320,14 @@ public class WFFormFormatMobileHandler extends FormFormatHandler { /** * 查找控件中按钮 - * @param node 组件节点 + * + * @param node 组件节点 * @param buttonGroupList 按钮组列表 */ - private void findButtons(JsonNode node,List buttonGroupList){ + private void findButtons(JsonNode node, List buttonGroupList) { String type = node.get("type").asText(); - switch (type){ - case "NavigationBar":{ + switch (type) { + case "NavigationBar": { //在流程中会隐藏头部和尾部,不需要提取导航栏的按钮。 break; // JsonNode toolbar = node.get("toolbar"); @@ -339,52 +340,52 @@ public class WFFormFormatMobileHandler extends FormFormatHandler { // } // break; } - case "ListView":{ + case "ListView": { //删除 - JsonNode swipeToolbar = node.get("swipeToolbar"); - if(swipeToolbar != null){ + JsonNode swipeToolbar = node.get("swipeToolbar"); + if (swipeToolbar != null) { ArrayNode items = (ArrayNode) swipeToolbar.get("items"); - if(items != null && items.size() > 0 ){ - this.findComplexButtons( items, node , buttonGroupList); + if (items != null && items.size() > 0) { + this.findComplexButtons(items, node, buttonGroupList); } } //多选 - JsonNode toolbar = node.get("toolbar"); - if(toolbar != null){ + JsonNode toolbar = node.get("toolbar"); + if (toolbar != null) { ArrayNode items = (ArrayNode) toolbar.get("items"); - if(items != null && items.size() > 0 ){ - this.findComplexButtons( items, node , buttonGroupList); + if (items != null && items.size() > 0) { + this.findComplexButtons(items, node, buttonGroupList); } } break; } - case "Button":{ + case "Button": { findSingleButton(node, buttonGroupList); break; } - case "ButtonGroup":{ + case "ButtonGroup": { ArrayNode items = (ArrayNode) node.get("items"); - if(items != null && items.size() > 0 ){ - this.findComplexButtons( items, node , buttonGroupList); + if (items != null && items.size() > 0) { + this.findComplexButtons(items, node, buttonGroupList); } break; } - case "Card":{ + case "Card": { ArrayNode items = (ArrayNode) node.get("actions"); - if(items != null && items.size() > 0 ){ - this.findComplexButtons( items, node , buttonGroupList); + if (items != null && items.size() > 0) { + this.findComplexButtons(items, node, buttonGroupList); } break; } - case "Section":{ - JsonNode footerToolbar = node.get("footerToolbar"); - if(null == footerToolbar){ + case "Section": { + JsonNode footerToolbar = node.get("footerToolbar"); + if (null == footerToolbar) { break; } ArrayNode items = (ArrayNode) footerToolbar.get("items"); - if(items !=null && items.size() > 0 ){ - this.findComplexButtons( items, node , buttonGroupList); + if (items != null && items.size() > 0) { + this.findComplexButtons(items, node, buttonGroupList); } break; } @@ -393,7 +394,8 @@ public class WFFormFormatMobileHandler extends FormFormatHandler { /** * 查找简单按钮 - * @param node 组件节点 + * + * @param node 组件节点 * @param buttonGroupList 按钮组列表 */ private void findSingleButton(JsonNode node, List buttonGroupList) { @@ -412,11 +414,11 @@ public class WFFormFormatMobileHandler extends FormFormatHandler { //3.创建按钮 List configAbleAttrs = getConfigAbleAttrs(node); if (!configAbleAttrs.isEmpty()) { - Button button = new Button(); + Button button = new Button(); button.setId(node.get("id").asText()); button.setCode(node.get("id").asText()); button.setType(node.get("type").asText()); - button.setName(getName(node,"按钮")); + button.setName(getName(node, "按钮")); button.setConfigurableAttrs(configAbleAttrs); buttonGroup.setButtons(Collections.singletonList(button)); @@ -427,16 +429,17 @@ public class WFFormFormatMobileHandler extends FormFormatHandler { /** * 查找复杂按钮 - * @param childNodes 按钮项 - * @param parentNode 按钮父级信息 + * + * @param childNodes 按钮项 + * @param parentNode 按钮父级信息 * @param buttonGroupList 按钮组列表 */ - private void findComplexButtons(ArrayNode childNodes, JsonNode parentNode , List buttonGroupList){ + private void findComplexButtons(ArrayNode childNodes, JsonNode parentNode, List buttonGroupList) { // 1.创建按钮组。button 当前没有分组信息,用方法名暂时做分组名 ButtonGroup buttonGroup = new ButtonGroup(); buttonGroup.setId(parentNode.get("id").asText()); buttonGroup.setCode(parentNode.get("id").asText()); - String name= getName(parentNode,"按钮"); + String name = getName(parentNode, "按钮"); String id = ""; if (parentNode.get("id") != null) { id = parentNode.get("id").asText(); @@ -444,16 +447,16 @@ public class WFFormFormatMobileHandler extends FormFormatHandler { name += "[" + id + "]"; buttonGroup.setName(name); - List