Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 2 Следующий »

Имеется возможность создания собственных поисков договоров с помощью динамического кода.

Так же существуют предустановленные алгоритмы поиска, которые можно включить в пункте меню:  Настройка => Управление договорами, далее на вкладке "Настройка поиска договоров".

(После создания собственных реализаций поиска, необходимо будет точно так же включить их)

 Включение поиска договоров

После выбора одного или нескольких реализаций поиска, они станут активны на экране "Поиск договора". После начала ввода данных в поле "Номер договора(комментарий)", после каждого введённого символа строка с поисковым запросом вызывает метод проверки (check) у каждой реализации поиска. Данный метод существует для проверки на предмет соответствия вводимых данных с логикой реализации поиска (например, в поле ИНН могут быть только цифры, метод check проверяет это условие и если указанные данные проходят данное условие, то реализация поиска появляется в выпадающем списке под полем для ввода номера договора) 


Алгоритм реализации поиска договоров представляет из себя реализацию интерфейса ru.bitel.bgbilling.kernel.contract.search.common.ContractSearchable


ContractSearchable
public interface ContractSearchable
{
    //для возможности установки цвета шрифта
    String COLOR_RED = "red";
    String COLOR_BLUE = "blue";
    String COLOR_GREEN = "green";

    //наиболее часто используемые ключи
    String CONTRACT_ID = "cid";
    String CONTRACT_TITLE = "contractTitle";
    String CONTRACT_BALANCE = "balance";
    String COMMENT = "comment";
    String COLOR = "color";
    String WIDTH = "width";

    /**
     * Реализация проверки указанных данных под условия данного поиска.
     *
     * @param searchData указанные данные для поиска
     * @return true - если подходит под условие
     */
    public boolean check( String searchData );

    /**
     * Реализация выгрузки
     * @param searchData - поисковой запрос
     * @param moduleId - id модуля для которого выбран поиск. 0, если ядро
     * @param filters - набор фильтров выбранных в клиенте для поиска
     * @param pageHolder - данные для построничного просмотра результатов
	 *     
	 * @return возвращает список JSON-объектов по которому будет строиться итоговая таблица результата
     */
    public List<JSONObject> search( String searchData,
                                    int moduleId,
                                    ContractSearchableFilters filters,
                                    Holder<Page> pageHolder )
        throws BGException;

    /**
     * Возможность указать читабельные названия для полей в результате поиска.
     * Каждое поле указывается отдельным JSONObject и помещается в результирующий JSONArray
     * Ключ для названия должен совпадать с ключом в списке возвращаемом методом search()
     *
     * Т.е. если search возвращает {contractTitle:title}, то getTitles должен вернуть {contractTitle:Название договора}
     * @return
     */
    public JSONArray getTitles();

    /**
     * Возвращает текстовое описание данного поиска.
     * Например, "Поиск по IP-адресу"
     * @return
     */
    public String getTitle();
}


Результирующий список содержит объекты типа JSONObject в котором могут находится любые данные, но для того, чтобы договор мог быть открыт, каждый JSON должен содержать id договора под ключом cid (константа ContractSearchable.CONTRACT_ID).

Для каждой записи есть возможность указать цвет, которым будет отображена запись в результирующем списке или таблице.

Так же есть возможность указать читабельное название каждого поля. Для этого необходимо реализовать метод getTitles(), пример его реализации показан выше.

Исходя из порядка полей в getTitles() будет формироваться очередность выстраивания столбцов или списка.

При выстраивании таблицы есть возможность задать ширину для определённого столбца, для этого в getTitles() для нужного столбца необходимо указать ширину под ключом "WIDTH"(ContractSearchable.WIDTH). 

Пример реализации метода getTitles
 @Override
    public JSONArray getTitles()
    {
        JSONArray titles = new JSONArray();
        titles.put( getTitleContractId( "ID договора" ) );
        titles.put( getTitleContractTitle( "Название договора" ) );
        titles.put( getTitle( NUMBER, "Номер", 100 ) );
        titles.put( getTitle( DEVICE_ID, "ID устройства" ) );
        titles.put( getTitle( ACCOUNT_STATE, "Состояние устройства", 50 ) );
        return titles;
    }



  • Нет меток