Сделал обновление для плагина в части генерации таблиц.
Немного поменялся интерфейс, который нужно реализовывать, чтобы получить данные для таблиц с помощью дин. кода.
Теперь он выглядит следующим образом:
Код:
public interface TableDataExtractor
{
/**
* Метод, получающий данные для таблицы. Каждая строка представлена в виде Map<String, String>, где в качестве ключа выступает название столбца, которое прописывается
* в таблице-шаблоне в файле шаблона. Ключи, определяемые в map должны строго совпадать с теми, которые прописаны в файле шаблона. Если в файле названия стролбцов
* не заданы, то берутся значения по умолчанию (col1...colN) и, соответственно, предполагается, что в дин. коде используются эти же значения для ключей.
* @param con соединение с БД
* @param contractId код договора
* @param apiRowList список строк таблицы, который был перед с помощью API в метод генерации документов. Это сделано для того, чтобы можно было в дин. коде поменять значения, переданные через API.
* @return список строк таблицы. Возможно вернуть переданный apiRowList
* @throws BGException
*/
public List<Map<String, String>> extractData( Connection con, int contractId, List<Map<String, String>> apiRowList )
throws BGException;
}
Вот пример генерации таблицы по шаблону
1) Создали шаблон документа в формате .docx
2) В этом шаблоне создали таблицу (Заголовок + первая строка-шаблон, из которой будет копироваться стиль для всех генерируемых строк) (см.скриншот)
3) Запомнили порядковый номер таблицы в документе
4) Создали шаблон документа в плагине Documents
5) Привязали к нему файл шаблона
6) На вкладке Таблицы редактора шаблонов добавили новую таблицу (см. скриншот)
6.1) Создали дин. класс для получения данных (указано в качестве примера. Возможно использовать SQL) следующего содержания:
Код:
package ru.reflexive;
import java.sql.Connection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.plugins.documents.server.bean.pattern.TableDataExtractor;
public class Table
implements TableDataExtractor
{
@Override
public List extractData( Connection connection1, int int2, List<Map<String, String>> list3 )
throws BGException
{
Map<String, String> map = new HashMap<>(3);
map.put( "col1", "1" );
map.put( "col2", "NPAY" );
map.put( "col3", "100" );
list3.add( map );
map = new HashMap<>();
map.put( "col1", "2" );
map.put( "col2", "Inet" );
map.put( "col3", "120" );
list3.add( map );
map = new HashMap<>();
map.put( "col1", "3" );
map.put( "col2", "Bill" );
map.put( "col3", "1000" );
list3.add( map );
map = new HashMap<>();
map.put( "col1", "4" );
map.put( "col2", "BVCom" );
map.put( "col3", "unlim" );
list3.add( map );
return list3;
}
}
7) Сохраняем шаблон документа и переходим в договор
8 ) Нажимаем генерировать и смотрим результат (см. скриншот)
Если есть вопросы, то пишите.