|
|
|
@ -28,6 +28,7 @@ import com.fr.report.cell.FloatElement;
|
|
|
|
|
import com.fr.report.cell.tabledata.ElementUsedTableDataProvider; |
|
|
|
|
import com.fr.report.worksheet.FormElementCase; |
|
|
|
|
import com.fr.stable.StringUtils; |
|
|
|
|
import org.jetbrains.annotations.Nullable; |
|
|
|
|
|
|
|
|
|
import java.util.Arrays; |
|
|
|
|
import java.util.HashMap; |
|
|
|
@ -97,6 +98,8 @@ public class TableDataFollowingPasteUtils {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// 对TableData做clone处理
|
|
|
|
|
tempMap = dealWithTableData4Clone(tempMap); |
|
|
|
|
// 处理存储过程名称问题
|
|
|
|
|
return dealWithStoreProcedure(tempMap); |
|
|
|
|
} catch (Exception e) { |
|
|
|
@ -179,6 +182,8 @@ public class TableDataFollowingPasteUtils {
|
|
|
|
|
collectTableDataInChartCollection(templateTableData, tempMap, widget); |
|
|
|
|
collectTableDataInElementCaseEditor(templateTableData, tempMap, widget); |
|
|
|
|
} |
|
|
|
|
// 对TableData做clone处理
|
|
|
|
|
tempMap = dealWithTableData4Clone(tempMap); |
|
|
|
|
// 处理存储过程名称问题
|
|
|
|
|
return dealWithStoreProcedure(tempMap); |
|
|
|
|
} catch (Exception e) { |
|
|
|
@ -187,6 +192,23 @@ public class TableDataFollowingPasteUtils {
|
|
|
|
|
return new HashMap<>(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 对Map中所有的TableData做clone处理 |
|
|
|
|
* @param tempMap |
|
|
|
|
*/ |
|
|
|
|
private static Map<String, TableData> dealWithTableData4Clone(Map<String, TableData> tempMap) { |
|
|
|
|
Map<String, TableData> resultMap = new HashMap<>(); |
|
|
|
|
for (Map.Entry<String, TableData> entry : tempMap.entrySet()) { |
|
|
|
|
String name = entry.getKey(); |
|
|
|
|
TableData tableData = entry.getValue(); |
|
|
|
|
TableData clonedTableData = cloneTableData(tableData); |
|
|
|
|
if (clonedTableData != null) { |
|
|
|
|
resultMap.put(name, clonedTableData); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return resultMap; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 收集控件-报表块中使用的数据集 |
|
|
|
|
* |
|
|
|
@ -353,4 +375,19 @@ public class TableDataFollowingPasteUtils {
|
|
|
|
|
} |
|
|
|
|
return tableDataPane; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* clone数据源,如果失败,打印日志,并返回null,谨慎使用 |
|
|
|
|
* @param tableData |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
@Nullable |
|
|
|
|
public static TableData cloneTableData(TableData tableData) { |
|
|
|
|
try { |
|
|
|
|
return (TableData) tableData.clone(); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
FineLoggerFactory.getLogger().error(e, "clone table data {} failed", tableData.getName()); |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|