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 String colspan = "1"; //跨行 private String 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 ReportColumn() { } public ReportColumn(String content) { this.content = content; } public ReportColumn(int colspan, int rowspan) { this.colspan = String.valueOf(colspan); this.rowspan = String.valueOf(rowspan); } public ReportColumn(String content, int colspan, int rowspan) { this.content = content; this.colspan = String.valueOf(colspan); this.rowspan = String.valueOf(rowspan); } public void replace(String key, String value) { if (!otherParams.isEmpty()) { Map otherParams = this.otherParams; this.otherParams = new HashMap<>(); otherParams.forEach((k, v) -> { 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); } if (key.equals(this.colspan)) { this.colspan = value; } if (key.equals(this.rowspan)) { this.rowspan = value; } } public void addProperty(String key, String value) { otherParams.put(key, value); } public String getColspan() { return colspan; } public void setColspan(int colspan) { this.colspan = String.valueOf(colspan); } public void setColspan(String colspan) { this.colspan = colspan; } public String getRowspan() { return rowspan; } public int getRowspanInt() { return NumberUtil.parseInt(rowspan); } public int getColspanInt() { return NumberUtil.parseInt(colspan); } public void setRowspan(String rowspan) { this.rowspan = rowspan; } public void setRowspan(int rowspan) { this.rowspan = String.valueOf(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; } }