liujie
2026-09-20 25999c575dd42b4715e49d3fe57e73c2c3204ccb
admin-server/src/main/java/com/estate/expert/admin/stat/report/render/DeviceTablePolicy.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.deepoove.poi.policy.DynamicTableRenderPolicy;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.springframework.util.CollectionUtils;
/**
 * 设备表格渲染策略
@@ -19,16 +20,26 @@
    @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("设备编号");
            for (var record : records) {
                var info = (JSONObject) record;
                var row = table.insertNewTableRow(table.getRows().size() );
                RenderHelper.renderCell(row, name);
                RenderHelper.renderCell(row, info.getString("检查问题"));
                RenderHelper.renderCell(row, info.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);
                    }
                }
            }
        }