Это отчёты, выполняемые с помощью скрипта 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 указываются заголовки полей данного отчёта .
C верси 8.2201+ доступны дополнительные параметры: align (выравнивание данных в столбце); wmin, wpref, wmax (минимальная, предпочтительня, максимальная ширина столбца)
Блок кода |
---|
<fields>
<item id="title" title="Имя" align="-1|0|1" wmin="-1|0|x" wpref="-1|0|y" wmax="-1|0|z"/>
<item id="comment" title="Комментарий"/>
</fields> |
Создайте файл и сохраните его в директории reports как <модуль>_<id>.java. Пример файла :
Блок кода | ||||
---|---|---|---|---|
| ||||
public void fillReport( con, filter, ru.bitel. |
...
bgbilling. |
...
modules.reports. |
...
server.report.BGJsonReport.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 предворить символом '#' или с версии 8.2201+ задать нулевые значения параметров wmin, wpref и wmax:
Блок кода | ||||
---|---|---|---|---|
| ||||
<fields> ... <item id="cid" title="#cid"/> ... |
...