Табличные отчёты.
Это отчёты, выполняемые с помощью скрипта Beanshell. С возможностью сохранения в csv.
Фильтр отчёта настраивается так, как описано выше. Кроме того, нужно сделать следующие модификации: в файле *.rep.xml нужно поместить атрибут type=""java":
<report title=
"Test"
type=
"java"
>
<address title=
"Адрес"
cityName=
"cityId"
streetName=
"streetId"
houseName=
"house"
/>
<combo name=
"status"
title=
"Статус"
>
<item id=
"-1"
title=
"любой"
/>
<item id=
"0"
title=
"активен"
/>
<item id=
"4"
title=
"приостановлен"
/>
<item id=
"3"
title=
"закрыт"
/>
</combo>
<fields>
<item id=
"title"
title=
"Имя"
/>
<item id=
"comment"
title=
"Комментарий"
/>
</fields>
</report>
В теге fields указываются заголовки полей данного отчёта .
Создайте файл и сохраните его в директории reports как <модуль>_<id>.java. Пример файла :
public
void
fillReport( con, filter, bitel.billing.server.reports.BGCSVReport.ReportResult result )
{
query =
" SELECT * from contract "
;
query +=
" LIMIT "
+ ((pageIndex -
1
) * pageSize )+
","
+ pageSize;
ps = con.prepareStatement( query );
data =
new
ArrayList(
1000
);
rs = ps.executeQuery();
while
( rs. next() )
{
title = rs.getString(
"title"
);
comment = rs.getString(
"comment"
);
map =
new
HashMap();
map.put(
"title"
, title );
map.put(
"comment"
, comment );
data.add( map );
}
result.setData( data );
}
con - объект класса java.sql.Connection - соединение с базой данных;
filter - объект класса bitel.billing.server.admin.reports.BGReportFilter, содержащий параметры фильтра, переменные конфигурации модуля отчётов;
result - объект класса bitel.billing.server.reports.BGCSVReport.ReportResult, в который необходимо передать параметры отчёта и datasource;
pageSize - размер страницы;
pageIndex - номер страницы.
Пример внешнего вида отчёта :
С помощью кнопки "сохранить" можно сохранить данные отчёта в csv-файл.
Примеры отчётов доступны на Wiki.
Есть возможность спрятать столбец в итоговой таблице, для этого надо в файле с описанием фильтров его значение title предворить символом '#':
<fields>
...
<item id=
"cid"
title=
"#cid"
/>
...
После этого столбец станет невидимым (и его настоящее заглавие останется с решёткой). Это может понадобиться, например, для нижеописанной возможности.
При клике на строки таблицы могут выполняться некоторые действия в зависимости от содержимого таблицы и содержимого в каждой строке. В данный момент имеются следующие возможности:
Если в таблице присутствует столбец с заголовком cid (или же невидимый #cid), то при клике на строку откроется соответствующий содержимому столбца cid договор. Как и в случае с jasper-отчётами, это можно использовать для организации произвольного поиска договоров.