Browse Source

Merge pull request #15552 in DESIGN/design from bugfix/11.0 to feature/x

* commit '631252ece8e50f6de79c647825ccb6fa01a6a487':
  REPORT-141452 【数据集替换】存储过程的数据集无法替换
feature/x
superman 4 days ago
parent
commit
17b29ffa95
  1. 38
      designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceUtils.java

38
designer-realize/src/main/java/com/fr/design/actions/replace/utils/ReplaceUtils.java

@ -63,6 +63,7 @@ import com.fr.report.utils.ElementCaseHelper;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -127,13 +128,7 @@ public class ReplaceUtils {
Set<String> ans = new HashSet<>(); Set<String> ans = new HashSet<>();
FormElementCaseProvider provider = elementCaseEditor.getElementCase(); FormElementCaseProvider provider = elementCaseEditor.getElementCase();
if (provider instanceof ElementCase) { if (provider instanceof ElementCase) {
// 非公式部分 ans.addAll(searchElementCaseDependenceTables((ElementCase) provider));
ans.addAll(searchTableDataWithOutFormula((ElementCase)provider));
// 公式部分——理论上就只有单元格和控件(超链那些都包含)
List<FormulaInfo> formulaInfos = getElementCaseFormulas((ElementCase) provider);
ans.addAll(searchFormulaInfos(formulaInfos));
// 超链部分
ans.addAll(searchElementCasJs((ElementCase)provider));
} }
return ans; return ans;
} }
@ -168,10 +163,10 @@ public class ReplaceUtils {
String tableName = iterator.next(); String tableName = iterator.next();
ans.add(tableName); ans.add(tableName);
} }
ans.addAll(searchReport(workBook));
} }
return ans; return ans;
} }
/** /**
* 获取CPT里使用的公式 * 获取CPT里使用的公式
* *
@ -860,5 +855,32 @@ public class ReplaceUtils {
return ans; return ans;
} }
private static Set<String> searchReport(WorkBook workBook) {
Set<String> ans = new HashSet<>();
for (int i = 0; i < workBook.getReportCount(); i++) {
Report report = workBook.getReport(i);
if (report != null) {
Iterator it = report.iteratorOfElementCase();
while (it.hasNext()) {
ElementCase elementCase = (ElementCase) it.next();
ans.addAll(searchElementCaseDependenceTables(elementCase));
}
}
}
return ans;
}
private static Collection<String> searchElementCaseDependenceTables(ElementCase provider) {
Set<String> ans = new HashSet<>();
// 非公式部分
ans.addAll(searchTableDataWithOutFormula(provider));
// 公式部分——理论上就只有单元格和控件(超链那些都包含)
List<FormulaInfo> formulaInfos = getElementCaseFormulas( provider);
ans.addAll(searchFormulaInfos(formulaInfos));
// 超链部分
ans.addAll(searchElementCasJs(provider));
return ans;
}
} }

Loading…
Cancel
Save