package com.fr.data; import com.fr.general.data.TableDataException; import com.fr.log.FineLoggerFactory; import com.fr.stable.Primitive; import java.util.ArrayList; import java.util.List; public abstract class SimpleTableData extends AbstractTableData { private static final long serialVersionUID = -9192346318115411568L; private String[] columnNames; private List<Object[]> rowList = null; public SimpleTableData() { this.columnNames = initColumnNames(); } public int getColumnCount() { return (this.columnNames == null) ? 0 : this.columnNames.length; } public String getColumnName(int paramInt) { return (paramInt < getColumnCount()) ? this.columnNames[paramInt] : ""; } public int getRowCount() throws TableDataException { checkLoaded(); return this.rowList.size(); } public Object getValueAt(int paramInt1, int paramInt2) { checkLoaded(); Object[] arrayOfObject = this.rowList.get(paramInt1); if (arrayOfObject == null) return Primitive.NULL; if (paramInt2 >= arrayOfObject.length) return Primitive.NULL; return ((Object[])this.rowList.get(paramInt1))[paramInt2]; } public abstract String[] initColumnNames(); public abstract List<Object[]> loadData(); public void release() throws Exception { super.release(); this.rowList = null; } private void checkLoaded() { if (this.rowList == null) { try { this.rowList = loadData(); } catch (Exception exception) { FineLoggerFactory.getLogger().error(exception.getMessage(), exception); } if (this.ro
赞 0 2022-11-25 23:10
请问,如何获取模板参数
赞 0 2022-11-24 16:11
您好,数据集中定义数据集参数,不好获取模板参数,您说的是控件传值给数据集吗,可以看下控件筛选查询-https://help.fanruan.com/finereport/doc-view-4193.html 或者您可以再描述下您的场景呢~
赞 0 2023-01-11 16:22
Connection conn = ConnectionConfig.getInstance().getConnection("FRDemo");这里的FRDemo表示什么意思呢
赞 0 2022-10-20 15:54
您好,这个是默认的帆软的数据连接名称呢,使用时您可以修改为自己环境下的数据连接名称呢~
赞 0 2023-01-11 16:24
给大家提供一个对接现有系统接口的思路: 1. 将 hutools-all-xxx.jar 复制到fine report安装目录/lib中(需要重启才生效),并且保证我们编写程序的demo工程中也有该依赖,目的是为了简化请求接口 2. 使用类似 String token = ((ParameterProvider) (parameters.get().toArray())[0]).getValue().toString(); 的语句获取必要参数,这里拿到了请求系统必要的token。 3. 使用工具类发送http请求: String result2 = HttpRequest.get("url") .header(Header.AUTHORIZATION, "Bearer " + token)//头信息,多个头信息多次调用此方法即可 .timeout(20000)//超时,毫秒 .execute().body(); 4. 使用 JSONUtil 解析结果并返回。 5. 将上述调试好的 java 类编译,与生成的 class 文件一并放到安装目录中 (C:\FineReport_11.0\webapps\webroot\WEB-INF\classes\com\fr\data),注意路径。 6. 模板设计器中选择刚才的 class,定义好参数(顺序很重要,代码中是按顺序获取参数)。预览模板时,参数可以从前端的url中传过来,比如 http://www.baidu.com&token=123456 中可以获取我们需要的 token
赞 5 2022-07-15 17:21
您好,欢迎您进行文档共创,将自己的方法写出来,让其他小伙伴收益呢~ https://bbs.fanruan.com/thread-126848-1-1.html?source=5
赞 1 2023-01-11 16:26
需要一次性查出所有的数据?如何与分页相结合呢。例如我动态传入分页参数 page=0,size=10, 如何获取到总条数、总页数? 因为返回对象是一个List<Object[]>
赞 0 2022-05-19 17:10
同问
赞 0 2022-11-04 14:31
您好,代码中 String sql = "select * from " + tableName; 位置,参数只有表名,如果还需要其他的参数,您可以再定义,然后加在SQL语句中呢~
赞 0 2023-01-11 16:29
118 评论
package com.fr.data;
import com.fr.general.data.TableDataException;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.Primitive;
import java.util.ArrayList;
import java.util.List;
public abstract class SimpleTableData extends AbstractTableData {
private static final long serialVersionUID = -9192346318115411568L;
private String[] columnNames;
private List<Object[]> rowList = null;
public SimpleTableData() {
this.columnNames = initColumnNames();
}
public int getColumnCount() {
return (this.columnNames == null) ? 0 : this.columnNames.length;
}
public String getColumnName(int paramInt) {
return (paramInt < getColumnCount()) ? this.columnNames[paramInt] : "";
}
public int getRowCount() throws TableDataException {
checkLoaded();
return this.rowList.size();
}
public Object getValueAt(int paramInt1, int paramInt2) {
checkLoaded();
Object[] arrayOfObject = this.rowList.get(paramInt1);
if (arrayOfObject == null)
return Primitive.NULL;
if (paramInt2 >= arrayOfObject.length)
return Primitive.NULL;
return ((Object[])this.rowList.get(paramInt1))[paramInt2];
}
public abstract String[] initColumnNames();
public abstract List<Object[]> loadData();
public void release() throws Exception {
super.release();
this.rowList = null;
}
private void checkLoaded() {
if (this.rowList == null) {
try {
this.rowList = loadData();
} catch (Exception exception) {
FineLoggerFactory.getLogger().error(exception.getMessage(), exception);
}
if (this.ro
赞 0 2022-11-25 23:10
请问,如何获取模板参数
赞 0 2022-11-24 16:11
您好,数据集中定义数据集参数,不好获取模板参数,您说的是控件传值给数据集吗,可以看下控件筛选查询-https://help.fanruan.com/finereport/doc-view-4193.html
或者您可以再描述下您的场景呢~
赞 0 2023-01-11 16:22
Connection conn = ConnectionConfig.getInstance().getConnection("FRDemo");这里的FRDemo表示什么意思呢
赞 0 2022-10-20 15:54
您好,这个是默认的帆软的数据连接名称呢,使用时您可以修改为自己环境下的数据连接名称呢~
赞 0 2023-01-11 16:24
给大家提供一个对接现有系统接口的思路:
1. 将 hutools-all-xxx.jar 复制到fine report安装目录/lib中(需要重启才生效),并且保证我们编写程序的demo工程中也有该依赖,目的是为了简化请求接口
2. 使用类似 String token = ((ParameterProvider) (parameters.get().toArray())[0]).getValue().toString(); 的语句获取必要参数,这里拿到了请求系统必要的token。
3. 使用工具类发送http请求:
String result2 = HttpRequest.get("url")
.header(Header.AUTHORIZATION, "Bearer " + token)//头信息,多个头信息多次调用此方法即可
.timeout(20000)//超时,毫秒
.execute().body();
4. 使用 JSONUtil 解析结果并返回。
5. 将上述调试好的 java 类编译,与生成的 class 文件一并放到安装目录中 (C:\FineReport_11.0\webapps\webroot\WEB-INF\classes\com\fr\data),注意路径。
6. 模板设计器中选择刚才的 class,定义好参数(顺序很重要,代码中是按顺序获取参数)。预览模板时,参数可以从前端的url中传过来,比如 http://www.baidu.com&token=123456 中可以获取我们需要的 token
赞 5 2022-07-15 17:21
您好,欢迎您进行文档共创,将自己的方法写出来,让其他小伙伴收益呢~
https://bbs.fanruan.com/thread-126848-1-1.html?source=5
赞 1 2023-01-11 16:26
需要一次性查出所有的数据?如何与分页相结合呢。例如我动态传入分页参数 page=0,size=10,
如何获取到总条数、总页数? 因为返回对象是一个List<Object[]>
赞 0 2022-05-19 17:10
同问
赞 0 2022-11-04 14:31
您好,代码中
String sql = "select * from " + tableName;
位置,参数只有表名,如果还需要其他的参数,您可以再定义,然后加在SQL语句中呢~
赞 0 2023-01-11 16:29