@ -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 ;
}
}