You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
172 lines
5.8 KiB
172 lines
5.8 KiB
3 years ago
|
/*
|
||
|
* Copyright (C), 2018-2020
|
||
|
* Project: starter
|
||
|
* FileName: ParamColumn
|
||
|
* Author: xx
|
||
|
* Date: 2020/12/8 11:27
|
||
|
*/
|
||
|
package com.fr.plugin.isgd.bean;
|
||
|
|
||
|
import com.fanruan.api.i18n.I18nKit;
|
||
|
import com.fanruan.api.util.GeneralKit;
|
||
|
import com.fanruan.api.util.StringKit;
|
||
|
import com.fr.base.Formula;
|
||
|
import com.fr.base.Style;
|
||
|
import com.fr.chart.chartattr.ChartCollection;
|
||
|
import com.fr.chart.chartattr.ChartPainter;
|
||
|
import com.fr.general.DateUtils;
|
||
|
import com.fr.general.ImageWithSuffix;
|
||
|
import com.fr.json.JSONArray;
|
||
|
import com.fr.main.impl.LinkWorkBookTemplate;
|
||
|
import com.fr.plugin.isgd.entity.ReportIndexInfoEntity;
|
||
|
import com.fr.plugin.isgd.menu.ParamConfig;
|
||
|
import com.fr.report.cell.ResultCellElement;
|
||
|
import com.fr.report.cell.cellattr.core.ResultSubReport;
|
||
|
import com.fr.report.cell.cellattr.core.RichText;
|
||
|
import com.fr.report.cell.cellattr.core.SubReport;
|
||
|
import com.fr.report.cell.cellattr.core.group.DSColumn;
|
||
|
import com.fr.report.cell.painter.BiasTextPainter;
|
||
|
import com.fr.report.report.ECReport;
|
||
|
import com.fr.stable.StableUtils;
|
||
|
import org.jetbrains.annotations.NotNull;
|
||
|
|
||
|
import java.util.*;
|
||
|
|
||
|
/**
|
||
|
* <Function Description><br>
|
||
|
* <自定义列参数bean>
|
||
|
*
|
||
|
* @author xx
|
||
|
* @since 1.0.0
|
||
|
*/
|
||
|
public class ParamColumn {
|
||
|
public static final String REGEX_HTML1 = "\\&[a-zA-Z]{1,10};";
|
||
|
public static final String REGEX_HTML2 = "<[^>]*>";
|
||
|
public static final String REGEX_HTML3 = "[(/>)<]";
|
||
|
private String reportName;
|
||
|
private int[] headerRows;
|
||
|
private JSONArray columnArray;
|
||
|
|
||
|
public ParamColumn() {
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 单元格结果值转为字符串
|
||
|
*
|
||
|
* @param resultCellElement
|
||
|
* @return
|
||
|
*/
|
||
|
@NotNull
|
||
|
private String getCellText(ResultCellElement resultCellElement) {
|
||
|
String cellText;
|
||
|
Object value = this.getCellValue(resultCellElement);
|
||
|
Style style = resultCellElement.getStyle();
|
||
|
if (style != null) {
|
||
|
cellText = Style.valueToText(value, style.getFormat());
|
||
|
} else {
|
||
|
cellText = GeneralKit.objectToString(value);
|
||
|
}
|
||
|
cellText = cellText.replaceAll(REGEX_HTML1, StringKit.EMPTY)
|
||
|
.replaceAll(REGEX_HTML2, StringKit.EMPTY).replaceAll(REGEX_HTML3, StringKit.EMPTY);
|
||
|
return cellText;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 获得展示列值
|
||
|
*
|
||
|
* @param ecReport
|
||
|
* @return
|
||
|
*/
|
||
|
public List<ReportIndexInfoEntity> getReportIndexInfoEntities(ECReport ecReport, String reportCode, String currentUserName) {
|
||
|
List<ReportIndexInfoEntity> result = new ArrayList<>();
|
||
|
ReportIndexInfoEntity entity;
|
||
|
ResultCellElement resultCellElement;
|
||
|
for (int headerRow : headerRows) {
|
||
|
Iterator iterator = ecReport.getRow(headerRow - 1);
|
||
|
String cellText;
|
||
|
while (iterator.hasNext()) {
|
||
|
resultCellElement = (ResultCellElement) iterator.next();
|
||
|
cellText = getCellText(resultCellElement);
|
||
|
entity = new ReportIndexInfoEntity();
|
||
|
entity.setId(UUID.randomUUID().toString());
|
||
|
entity.setReportCode(reportCode);
|
||
|
entity.setTableCode(headerRow);
|
||
|
entity.setIndexCode(StableUtils.convertIntToABC(resultCellElement.getColumn() + 1));
|
||
|
entity.setIndexName(cellText);
|
||
|
entity.setCreateDate(DateUtils.getDate2LStr(new Date()));
|
||
|
entity.setUpdateDate(DateUtils.getDate2LStr(new Date()));
|
||
|
entity.setOpUsername(currentUserName);
|
||
|
result.add(entity);
|
||
|
}
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 读取cell值
|
||
|
*
|
||
|
* @param cell
|
||
|
* @return
|
||
|
*/
|
||
|
private Object getCellValue(ResultCellElement cell) {
|
||
|
if (cell == null) {
|
||
|
return StringKit.EMPTY;
|
||
|
}
|
||
|
Object value = cell.getShowValue();
|
||
|
if (value instanceof Formula) {
|
||
|
value = ((Formula) value).getPureContent();
|
||
|
} else if (value instanceof BiasTextPainter) {
|
||
|
value = ((BiasTextPainter) value).getText();
|
||
|
} else if (value instanceof DSColumn) {
|
||
|
value = ((DSColumn) value).getDSName();
|
||
|
} else if (value instanceof SubReport) {
|
||
|
value = ((LinkWorkBookTemplate) ((SubReport) value).getPackee()).getTemplatePath();
|
||
|
} else if (value instanceof ResultSubReport) {
|
||
|
value = I18nKit.getLocText("Plugin-isgd_SubReport_Column");
|
||
|
} else if (value instanceof ChartCollection) {
|
||
|
value = ((ChartCollection) value).getChartName(0);
|
||
|
} else if (value instanceof ChartPainter) {
|
||
|
value = ((ChartPainter) value).getGlyphName(0);
|
||
|
} else if (value instanceof RichText) {
|
||
|
value = ((RichText) value).getContent();
|
||
|
} else if (value instanceof ImageWithSuffix) {
|
||
|
value = I18nKit.getLocText("Plugin-isgd_Image_Column");
|
||
|
}
|
||
|
return value == null ? StringKit.EMPTY : value;
|
||
|
}
|
||
|
|
||
|
public String getReportName() {
|
||
|
return reportName;
|
||
|
}
|
||
|
|
||
|
public void setReportName(String reportName) {
|
||
|
this.reportName = reportName;
|
||
|
}
|
||
|
|
||
|
public JSONArray getColumnArray() {
|
||
|
return columnArray;
|
||
|
}
|
||
|
|
||
|
public void setColumnArray(JSONArray columnArray) {
|
||
|
this.columnArray = columnArray;
|
||
|
}
|
||
|
|
||
|
public int[] getHeaderRows() {
|
||
|
return headerRows;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 设置表头列值所在行码
|
||
|
*
|
||
|
* @param paramConfig
|
||
|
* @return
|
||
|
*/
|
||
|
public void setHeaderRows(ParamConfig paramConfig) {
|
||
|
int[] headerRows = paramConfig != null ? paramConfig.getHeaderRowInts() : new int[]{0};
|
||
|
this.setHeaderRows(headerRows);
|
||
|
}
|
||
|
|
||
|
public void setHeaderRows(int[] headerRow) {
|
||
|
this.headerRows = headerRow;
|
||
|
}
|
||
|
}
|