package com.product.server.report.entity; import cn.hutool.core.util.NumberUtil; import com.product.common.lang.StringUtils; import java.util.HashMap; import java.util.Map; /** * @Author cheng * @Date 2023/4/3 11:34 * @Desc 报表单元格 */ public class ReportColumn { //跨列 private int colspan = 1; //跨行 private int rowspan = 1; //单元格内容 private String content; //穿透字段 private boolean penetrate; //子报表 private boolean subReport; //穿透属性 private String penetrateProperty; //子报表属性 private String subReportProperty; //单元格宽度 px private int columnWidth; private Map otherParams = new HashMap<>(); public void replace(String key, String value) { if (!otherParams.isEmpty()) { Map otherParams = this.otherParams; this.otherParams = new HashMap<>(); otherParams.forEach((k, v) -> { if ("rowspan".equals(v) && NumberUtil.isNumber(value) && k.equals(key)) { this.rowspan = NumberUtil.parseInt(value); } this.otherParams.put(k.replace(key, value), v.replace(key, value)); }); } if (!StringUtils.isEmpty(subReportProperty)) { subReportProperty = subReportProperty.replace(key, value); } if (!StringUtils.isEmpty(penetrateProperty)) { penetrateProperty = penetrateProperty.replace(key, value); } if (!StringUtils.isEmpty(content)) { content = content.replace(key, value); } } public void addProperty(String key, String value) { otherParams.put(key, value); } public int getColspan() { return colspan; } public void setColspan(int colspan) { this.colspan = colspan; } public int getRowspan() { return rowspan; } public void setRowspan(int rowspan) { this.rowspan = rowspan; } public String getContent() { return getContent(false); } public String getContent(boolean emptyChar) { if (emptyChar) { return this.content == null ? "" : this.content; } return this.content; } public void setContent(String content) { this.content = content; } public boolean isPenetrate() { return penetrate; } public void setPenetrate(boolean penetrate) { this.penetrate = penetrate; } public boolean isSubReport() { return subReport; } public void setSubReport(boolean subReport) { this.subReport = subReport; } public String getPenetrateProperty() { return penetrateProperty; } public void setPenetrateProperty(String penetrateProperty) { this.penetrateProperty = penetrateProperty; } public String getSubReportProperty() { return subReportProperty; } public void setSubReportProperty(String subReportProperty) { this.subReportProperty = subReportProperty; } public int getColumnWidth() { return columnWidth; } public void setColumnWidth(int columnWidth) { this.columnWidth = columnWidth; } }