diff options
| author | shizhendong <[email protected]> | 2021-03-22 14:31:01 +0800 |
|---|---|---|
| committer | shizhendong <[email protected]> | 2021-03-22 14:31:01 +0800 |
| commit | 7804f0570b5b45757c651bab3ce88dd9b56a8212 (patch) | |
| tree | 552c00432cac2b654d919b3ee959611becdd53a4 | |
| parent | 71420951d7687d66d902e338af0a97f61d93fc81 (diff) | |
fix: 修改 expression/tmpl/render 实现方式
1. 传入渲染数据 varsVal 值为 各实体 ID,通过 id 找到实体属性值进行渲染表达式数据
| -rw-r--r-- | nz-admin/src/main/java/com/nis/modules/panel/service/impl/ExpreTmplServiceImpl.java | 72 |
1 files changed, 70 insertions, 2 deletions
diff --git a/nz-admin/src/main/java/com/nis/modules/panel/service/impl/ExpreTmplServiceImpl.java b/nz-admin/src/main/java/com/nis/modules/panel/service/impl/ExpreTmplServiceImpl.java index c753c179..21786642 100644 --- a/nz-admin/src/main/java/com/nis/modules/panel/service/impl/ExpreTmplServiceImpl.java +++ b/nz-admin/src/main/java/com/nis/modules/panel/service/impl/ExpreTmplServiceImpl.java @@ -1,5 +1,7 @@ package com.nis.modules.panel.service.impl; +import cn.hutool.core.bean.BeanPath; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.log.Log; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.parser.Feature; @@ -9,13 +11,22 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nis.common.exception.NZException; import com.nis.common.utils.*; +import com.nis.modules.asset.entity.Asset; +import com.nis.modules.asset.entity.Idc; +import com.nis.modules.asset.service.AssetService; +import com.nis.modules.asset.service.IdcService; +import com.nis.modules.endpoint.entity.MonitorEndpoint; +import com.nis.modules.endpoint.service.MonitorEndpointService; +import com.nis.modules.module.entity.MonitorModule; +import com.nis.modules.module.service.MonitorModuleService; import com.nis.modules.panel.dao.ExpreTmplDao; import com.nis.modules.panel.entity.ExpressionTmpl; import com.nis.modules.panel.service.ExpreTmplService; +import com.nis.modules.project.entity.MonitorProject; +import com.nis.modules.project.service.MonitorProjectService; import com.nis.modules.sys.entity.SysConfigEntity; import com.nis.modules.sys.service.SysConfigService; import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.io.IOUtils; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; @@ -49,6 +60,21 @@ public class ExpreTmplServiceImpl extends ServiceImpl<ExpreTmplDao, ExpressionTm @Autowired private SysConfigService sysConfigService; + @Autowired + private IdcService idcService; + + @Autowired + private AssetService assetService; + + @Autowired + private MonitorModuleService moduleService; + + @Autowired + private MonitorProjectService projectService; + + @Autowired + private MonitorEndpointService endpointService; + @Override public ExpressionTmpl queryTmplInfoById(Integer id) { ExpressionTmpl tmpl = this.getById(id); @@ -157,15 +183,57 @@ public class ExpreTmplServiceImpl extends ServiceImpl<ExpreTmplDao, ExpressionTm this.removeByIds(Arrays.asList(ids)); } + /** + * 表达式渲染 + * @param tmpl ExpressionTmpl 对象 , + * expression为表达式内容 + * varsVal 是替换内容,其中key asset.datacenter project module endpoint ,value 为 id + * @return + */ @Override public String renderExpression(ExpressionTmpl tmpl) { String expression = tmpl.getExpression(); Map varsVal = tmpl.getVarsVal(); - expression = this.generateExpression(expression, varsVal); + String[] vars = this.parseExpre(expression); + for (String var : vars) { + Integer assetId = var.startsWith("asset.") ? Integer.parseInt(varsVal.get(var).toString()) : null; + Integer dcId = var.startsWith("datacenter.") ? Integer.parseInt(varsVal.get(var).toString()) : null; + Integer projectId = var.startsWith("project.") ? Integer.parseInt(varsVal.get(var).toString()) : null; + Integer moduleId = var.startsWith("module.") ? Integer.parseInt(varsVal.get(var).toString()) : null; + Integer endpointId = var.startsWith("endpoint.") ? Integer.parseInt(varsVal.get(var).toString()) : null; + + Asset asset = ToolUtil.isNotEmpty(assetId) ? assetService.getById(assetId) : null; + Idc dc = ToolUtil.isNotEmpty(dcId) ? idcService.getById(dcId) : null; + MonitorProject project = ToolUtil.isNotEmpty(projectId) ? projectService.getById(projectId) : null; + MonitorModule module = ToolUtil.isNotEmpty(moduleId) ? moduleService.getById(moduleId) : null; + MonitorEndpoint endpoint = ToolUtil.isNotEmpty(endpointId) ? endpointService.getById(endpointId) : null; + + Object renderValue = null; + boolean flag = true; + if (var.startsWith("asset.") || var.startsWith("datacenter.") || var.startsWith("project.") || var.startsWith("module.") || var.startsWith("endpoint.")) { + flag = false; + } + renderValue = (var.startsWith("asset.") && ToolUtil.isNotEmpty(asset) && renderValue == null) ? BeanPath.create(var).get(asset) : renderValue; + renderValue = (var.startsWith("datacenter.") && ToolUtil.isNotEmpty(dc) && renderValue == null) ? BeanUtil.getProperty(dc, var.replaceAll("datacenter.", "")) : renderValue; + renderValue = (var.startsWith("project.") && ToolUtil.isNotEmpty(project) && renderValue == null) ? BeanUtil.getProperty(project, var.replaceAll("project.", "")) : renderValue; + renderValue = (var.startsWith("module.") && ToolUtil.isNotEmpty(module) && renderValue == null) ? BeanUtil.getProperty(module, var.replaceAll("module.", "")) : renderValue; + renderValue = (var.startsWith("endpoint.") && ToolUtil.isNotEmpty(endpoint) && renderValue == null) ? BeanUtil.getProperty(endpoint, var.replaceAll("endpoint.", "")) : renderValue; + renderValue = (renderValue == null && flag) ? varsVal.get(var) : renderValue; + if (renderValue == null && flag) { + continue; + } + expression = expression.replaceAll("\\{\\{" + var + "\\}\\}", renderValue == null ? "" : renderValue.toString()); + } return expression; } + /** + * 渲染表达式 + * @param expression 表达式 + * @param varsVal 表达式内容 直接进行 key value 渲染 + * @return + */ @Override public String renderExpression(String expression, Map varsVal) { expression = this.generateExpression(expression, varsVal); |
