diff --git a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceUtils.java b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceUtils.java index 2d51125f5b..66791c34b2 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceUtils.java +++ b/designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceUtils.java @@ -11,6 +11,8 @@ import com.fr.data.condition.ListCondition; import com.fr.data.core.Compare; import com.fr.data.impl.NameTableData; import com.fr.data.impl.TableDataDictionary; +import com.fr.data.impl.TreeNodeAttr; +import com.fr.data.impl.TreeNodeWrapper; import com.fr.design.actions.replace.action.content.cell.SearchCellAction; import com.fr.design.actions.replace.action.content.formula.SearchFormulaManager; import com.fr.design.actions.replace.action.content.formula.cell.SearchCellFormulaAction; @@ -30,8 +32,10 @@ import com.fr.form.data.DataBinding; import com.fr.form.ui.DataControl; import com.fr.form.ui.DictionaryContainer; import com.fr.form.ui.ElementCaseEditor; +import com.fr.form.ui.TreeEditor; import com.fr.form.ui.Widget; import com.fr.form.ui.concept.data.ValueInitializer; +import com.fr.form.ui.tree.LayerConfig; import com.fr.general.ComparatorUtils; import com.fr.general.data.Condition; import com.fr.general.data.TableDataColumn; @@ -542,6 +546,10 @@ public class ReplaceUtils { private static void replaceWidget(Widget widget, List entities) { if (widget instanceof DictionaryContainer) { DictionaryContainer db = (DictionaryContainer) widget; + if (widget instanceof TreeEditor) { + Object config = ((TreeEditor) widget).getBuildModelConfig(); + replaceTreeConfig(config, entities); + } if (db.getDictionary() instanceof TableDataDictionary) { TableDataDictionary tdd = (TableDataDictionary) db.getDictionary(); NameTableData ndd = (NameTableData) tdd.getTableData(); @@ -563,6 +571,41 @@ public class ReplaceUtils { } } + private static void replaceTreeConfig(Object config, List entities) { + if (config instanceof LayerConfig[]) { + LayerConfig[] layerConfigs = (LayerConfig[]) config; + dealWithLayerConfigs(layerConfigs, entities); + } else if (config instanceof TreeNodeWrapper) { + TreeNodeWrapper wrapper = (TreeNodeWrapper) config; + dealWithTreeNodeWrapper(wrapper, entities); + } else if (config instanceof TableDataDictionary) { + TableDataDictionary tableDataDictionary = (TableDataDictionary) config; + ElementCaseHelper.replaceTableDataDictionary(tableDataDictionary, (NameTableData) tableDataDictionary.getTableData(), entities); + } + } + + private static void dealWithTreeNodeWrapper(TreeNodeWrapper wrapper, List entities) { + for (TreeNodeAttr attr : wrapper.getTreeNodeAttrs()) { + if (attr.getDictionary() instanceof TableDataDictionary) { + TableDataDictionary tableDataDictionary = (TableDataDictionary) attr.getDictionary(); + ElementCaseHelper.replaceTableDataDictionary(tableDataDictionary, (NameTableData) tableDataDictionary.getTableData(), entities); + } + } + } + + private static void dealWithLayerConfigs(LayerConfig[] layerConfigs, List entities) { + for (LayerConfig layerConfig : layerConfigs) { + if (layerConfig.getDictionary() != null ) { + for (TableReplacementEntity entity : entities) { + if (layerConfig.getTableData() instanceof NameTableData && StringUtils.equals(layerConfig.getTableData().getName(), entity.getOldName())) { + layerConfig.setTableData(new NameTableData(entity.getNewName())); + } + } + ElementCaseHelper.replaceTableDataDictionary(layerConfig.getDictionary(), (NameTableData) layerConfig.getDictionary().getTableData(), entities); + } + } + } + /** * 替换悬浮元素中的数据集 *