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;
|
int colCnt = table.getRow(1).getTableCells().size();
|
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);
|
if (colCnt >= 5) {
|
RenderHelper.renderCell(row, String.valueOf(info.getLongValue("同类隐患出现频次")), textColor);
|
RenderHelper.renderCell(row, String.valueOf(info.getLongValue("检查频次")), textColor);
|
}
|
}
|
}
|
}
|
|
// 将第0列的连续包含相同内容的单元格合并
|
RenderHelper.mergeCellsVertically(table, 0, 0);
|
}
|
}
|