package com.estate.expert.admin.stat.report.render; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.deepoove.poi.policy.DynamicTableRenderPolicy; import org.apache.poi.xwpf.usermodel.XWPFTable; import org.springframework.util.CollectionUtils; /** * 设备表格渲染策略 */ public class DeviceTablePolicy extends DynamicTableRenderPolicy { /** * 渲染设备表格 * @param table 表格 * @param data 数据 * @throws Exception 异常 */ @Override public void render(XWPFTable table, Object data) throws Exception { var deviceRecords = (JSONArray) data; for (var d : deviceRecords) { var deviceInfo = (JSONObject) d; var records = deviceInfo.getJSONArray("问题"); var name = deviceInfo.getString("设备编号"); if (!CollectionUtils.isEmpty(records)) { var highLevelColor = RenderHelper.highLevelColor(records); for (var record : records) { var info = (JSONObject) record; var row = table.insertNewTableRow(table.getRows().size()); var errorLevel = info.getString("隐患等级"); var textColor = RenderHelper.getErrorLevelColor(errorLevel); RenderHelper.renderCell(row, name, highLevelColor); RenderHelper.renderCell(row, info.getString("检查问题"), textColor); RenderHelper.renderCell(row, info.getString("隐患等级"), textColor); } } } // 将第0列的连续包含相同内容的单元格合并 RenderHelper.mergeCellsVertically(table, 0, 0); } }