Ping333 писал(а):
что не так я делаю?
На первый взгляд - пользуетесь bsh в отчетах. Но я не уверен точно.
Вот файл описания отчета
custom_test_report.rep.xmlКод:
<?xml version="1.0" encoding="UTF-8"?>
<report title="Какой-то тестовый отчёт" type="java"
dyn_class="ru.xxx.bgbilling.modules.reports.reports.custom.TestReport">
</report>
Вот собственно динамический класс отчёта
Код:
package ru.xxx.bgbilling.modules.reports.reports.custom;
import bitel.billing.server.admin.reports.BGReportFilter;
import bitel.billing.server.reports.BGCSVReport.CSVFillerDataFields;
import bitel.billing.server.reports.BGCSVReport.ReportResult;
import org.apache.log4j.Logger;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TestReport
implements CSVFillerDataFields {
private static final Logger logger = Logger.getLogger(TestReport.class);
@Override
public void fillReport(Connection con, BGReportFilter filter, ReportResult result, Map<String, String> fields) throws Exception {
//Заполняем данные о стобцах. Иногда этого не делаю если выдаю ошибку.
fillReportFields(fields);
List<Map<String, String>> data = new ArrayList<Map<String, String>>(100);
String query = " SELECT id, title, comment FROM contract LIMIT 10 ";
try (PreparedStatement ps = con.prepareStatement(query);
ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("cid", rs.getString("id"));
map.put("title", rs.getString("title"));
map.put("comment", rs.getString("comment"));
data.add(map);
}
}
result.setData(data);
}
private void fillReportFields(Map<String, String> fields) {
fields.put("cid", "#cid");
fields.put("title", "Договор");
fields.put("comment", "Наименование");
}
}
Работает.