package com.fanruan.api.report.analy; import com.fanruan.api.report.analy.data.TreeNode; import com.fr.main.workbook.ResultWorkBook; import com.fr.report.report.Report; import com.fr.report.report.ResultReport; import com.fr.report.worksheet.AnalysisRWorkSheet; import com.fr.script.Calculator; import com.fr.web.core.TreeHTMLWriter; import com.fr.web.core.reportcase.WebElementReportCase; import com.fr.web.output.html.chwriter.ViewCellWriter; import com.fr.web.request.EmptyRepository; import java.util.Map; /** * @ClassName AnalyKit * @Author zack * @Date 2019/8/23 * @Version 10.0 * 数据分析相关工具类 */ public class AnalyKit { /** * 折叠树模板,将结果报表行转成一个树形数据结构 * * @param book 结果报表 * @param index sheet索引 * @return 树节点集合 */ public static Map generateResultBookTree(ResultWorkBook book, int index) { ResultReport resultWS = book.getResultReport(index); if (!(resultWS instanceof AnalysisRWorkSheet)) { //只有分析预览支持折叠树 throw new UnsupportedOperationException(); } AnalysisRWorkSheet analysisRWorkSheet = (AnalysisRWorkSheet) resultWS; Calculator c = Calculator.createCalculator(); c.setAttribute(Report.KEY, analysisRWorkSheet); TreeHTMLWriter htmlWriter = new TreeHTMLWriter(); ViewCellWriter cellHtmlWriter = new ViewCellWriter(new EmptyRepository(), 1, resultWS.getReportSettings(), true); htmlWriter.writeReportToHtml(new WebElementReportCase(analysisRWorkSheet, new EmptyRepository()), 1, cellHtmlWriter, new EmptyRepository(), ""); cellHtmlWriter.dealWithAllTreeNodeRelation(c); return AnalyKitHelper.generateNodeTree(analysisRWorkSheet); } }