118 评论

finetestny

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

用户C0313215

请问,如何获取模板参数

0 2022-11-24 16:11

RosieY

您好,数据集中定义数据集参数,不好获取模板参数,您说的是控件传值给数据集吗,可以看下控件筛选查询-https://help.fanruan.com/finereport/doc-view-4193.html
或者您可以再描述下您的场景呢~

0 2023-01-11 16:22

yzmJrMDQ7152268

Connection conn = ConnectionConfig.getInstance().getConnection("FRDemo");这里的FRDemo表示什么意思呢

0 2022-10-20 15:54

RosieY

您好,这个是默认的帆软的数据连接名称呢,使用时您可以修改为自己环境下的数据连接名称呢~

0 2023-01-11 16:24

icenele

给大家提供一个对接现有系统接口的思路:
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

RosieY

您好,欢迎您进行文档共创,将自己的方法写出来,让其他小伙伴收益呢~
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

帆软用户6H8B9YfB94

同问

0 2022-11-04 14:31

RosieY

您好,代码中
String sql = "select * from " + tableName;
位置,参数只有表名,如果还需要其他的参数,您可以再定义,然后加在SQL语句中呢~

0 2023-01-11 16:29