From b141d258f61e12dc131966920cf1952ffac53a82 Mon Sep 17 00:00:00 2001 From: hades Date: Tue, 5 Jan 2021 19:58:01 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-44410=20=E8=BF=9C=E7=A8=8B=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E6=95=B0=E6=8D=AE=E9=9B=86=E7=82=B9=E5=87=BB=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E5=8D=A1=E9=A1=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/DesignModelAdapter.java | 86 ++++++++++++++++++- .../data/datapane/TableDataTreePane.java | 4 +- .../fr/design/mainframe/FormModelAdapter.java | 23 ++++- .../mainframe/WorkBookModelAdapter.java | 35 +++++++- 4 files changed, 143 insertions(+), 5 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java b/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java index 24dd31484..02396cd5c 100644 --- a/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java +++ b/designer-base/src/main/java/com/fr/design/DesignModelAdapter.java @@ -1,8 +1,11 @@ package com.fr.design; import com.fr.base.Parameter; +import com.fr.base.ParameterConfig; +import com.fr.base.TableData; import com.fr.base.io.BaseBook; import com.fr.data.TableDataSource; +import com.fr.data.operator.DataOperator; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.mainframe.DesignerFrameFileDealerPane; import com.fr.design.mainframe.JTemplate; @@ -11,9 +14,14 @@ import com.fr.form.ui.DataControl; import com.fr.form.ui.MultiFileEditor; import com.fr.form.ui.Widget; import com.fr.general.ComparatorUtils; +import com.fr.log.FineLoggerFactory; +import com.fr.stable.Filter; +import com.fr.stable.ParameterProvider; import com.fr.stable.StringUtils; import com.fr.stable.js.WidgetName; +import com.fr.util.ParameterApplyHelper; +import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -40,7 +48,7 @@ public abstract class DesignModelAdapter tableDataParametersMap = new HashMap<>(); + + public DesignModelAdapter(S jTemplate) { this.jTemplate = jTemplate; @@ -241,6 +255,71 @@ public abstract class DesignModelAdapter map, Filter filter) { + Iterator it = this.getBook().getTableDataNameIterator(); + try { + // 清空下缓存 + tableDataParametersMap.clear(); + while (it.hasNext()) { + String name = it.next(); + TableData tableData = this.getBook().getTableData(name); + ParameterProvider[] parameterProviders = DataOperator.getInstance().getTableDataParameters(tableData); + if (filter != null) { + ParameterApplyHelper.addPara2Map(map, parameterProviders, filter); + } else { + ParameterApplyHelper.addPara2Map(map, parameterProviders); + } + tableDataParametersMap.put(name, parameterProviders); + } + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } + + protected void updateTableDataParameters(String oldName, + String tdName, + TableData tableData, + Map map, + Filter filter) { + // 更新下缓存名称 替换下数据集名称 + ParameterProvider[] providers = tableDataParametersMap.remove(oldName); + if (providers != null) { + tableDataParametersMap.put(tdName, providers); + } + + try { + for (Map.Entry entry : tableDataParametersMap.entrySet()) { + ParameterProvider[] parameterProviders; + if (ComparatorUtils.equals(entry.getKey(), tdName)) { + parameterProviders = DataOperator.getInstance().getTableDataParameters(tableData); + // 用来更新缓存 + providers = parameterProviders; + } else { + parameterProviders = entry.getValue(); + } + + if (filter != null) { + ParameterApplyHelper.addPara2Map(map, parameterProviders, filter); + } else { + ParameterApplyHelper.addPara2Map(map, parameterProviders); + } + + } + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + + // 更新缓存 + tableDataParametersMap.put(tdName, providers); + } + + protected void addGlobalParameters(Map map) { + // 添加全局参数 + Parameter[] glbParas = ParameterConfig.getInstance().getGlobalParameters(); + ParameterApplyHelper.addPara2Map(map, glbParas); + + } + /** * 环境改变. */ @@ -251,6 +330,11 @@ public abstract class DesignModelAdapter> { @@ -42,6 +46,16 @@ public class FormModelAdapter extends DesignModelAdapter> jTemplate.populateParameter(); } + @Override + public void tableDataParametersChanged(String oldName, String tdName, TableData tableData) { + Map map = new HashMap<>(); + addGlobalParameters(map); + updateTableDataParameters(oldName, tdName, tableData, map, parameterProvider -> !EmbParaFilter.isFRLayerTypePara(parameterProvider)); + ParameterApplyHelper.addPara2Map(map, this.getBook().getTemplateParameters()); + parameters = map.values().toArray(new Parameter[0]); + jTemplate.populateParameter(); + } + /** * 控件配置改变. */ @@ -135,6 +149,13 @@ public class FormModelAdapter extends DesignModelAdapter> @Override protected Parameter[] getLatestParameters() { - return this.getBook().getParameters(); + Map map = new HashMap<>(); + addGlobalParameters(map); + + addTableDataParameters(map, parameterProvider -> !EmbParaFilter.isFRLayerTypePara(parameterProvider)); + + ParameterApplyHelper.addPara2Map(map, this.getBook().getTemplateParameters()); + + return map.values().toArray(new Parameter[0]); } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/WorkBookModelAdapter.java b/designer-realize/src/main/java/com/fr/design/mainframe/WorkBookModelAdapter.java index 1a4f20c3d..87391a5a0 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/WorkBookModelAdapter.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/WorkBookModelAdapter.java @@ -18,9 +18,12 @@ import com.fr.stable.StringUtils; import com.fr.stable.bridge.StableFactory; import com.fr.stable.js.WidgetName; +import com.fr.util.ParameterApplyHelper; import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; /** * @author zhou @@ -72,6 +75,18 @@ public class WorkBookModelAdapter extends DesignModelAdapter map = new HashMap<>(); + addGlobalParameters(map); + updateTableDataParameters(oldName, tdName, tableData, map, null); + addReportParameters(map); + parameters = map.values().toArray(new Parameter[0]); + jTemplate.updateReportParameterAttr(); + jTemplate.populateReportParameterAttr(); + + } + /** * 控件改变. */ @@ -107,9 +122,27 @@ public class WorkBookModelAdapter extends DesignModelAdapter map = new HashMap<>(); + addGlobalParameters(map); + + addTableDataParameters(map, null); + + addReportParameters(map); + + return map.values().toArray(new Parameter[0]); + } + + private void addReportParameters(Map map) { + // 添加模板参数 + ReportParameterAttr parameterAttr = this.getBook().getReportParameterAttr(); + if (parameterAttr != null) { + ParameterApplyHelper.addPara2Map(map, parameterAttr.getParameters()); + } } + + + /** * 返回控件的名字 *