forum.bitel.ru
http://forum.bitel.ru/

Интерфейсы. Фич-реквест (CRM)
http://forum.bitel.ru/viewtopic.php?f=44&t=8181
Страница 1 из 2

Автор:  barguzin2 [ 20 июн 2013, 20:54 ]
Заголовок сообщения:  Интерфейсы. Фич-реквест

В IPN в шлюзах можно посмотреть занятость портов (договоры). Может в Inet на вкладке Устройства при открытии Интерфейсы конкретного девайса добавить в табличку столбец Договор, чтобы сразу всю текущую картину видеть, а то лазить в Использование каждого интерфейса не есть хорошая затея. Попутно это будет так сказать поиском по порту. А если еще сделать оттуда переход в договор - совсем чудно будет.

Автор:  nik247 [ 20 июн 2013, 22:53 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест

+100
Сейчас посмотреть занятость портов нет возможности - нужно в каждый прыгать.
Кто-то здесь писал - делал через отчеты, но как-то кузяво это, хотя лучше чем ничего.

Автор:  Cromeshnic [ 21 июн 2013, 08:19 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест

+1
Про переход в договор тоже писал уже, во вкладке "использование". Надо в 2 местах тогда.

Автор:  snark [ 24 июн 2013, 17:34 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест

+1
Хотелка более чем нужная.

Автор:  borisk [ 10 июл 2013, 19:29 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест

Я эту фичу просил уже черт знает когда :) Сказали сделают, за 4тр

Автор:  nik247 [ 15 июл 2013, 19:47 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест

Лед двинулся...
Надо обновляться и смотреть...
Код:
1207   15.07.2013 19:23:22   ДОБАВЛЕНО   Inet: Отображение текущего подписчика в интерфейсах устройства.
1207   15.07.2013 19:23:22   ДОБАВЛЕНО   Inet: Открытие вкладки договора в клиенте для подписчика интерфейса устройства.

Автор:  Cromeshnic [ 14 окт 2013, 12:07 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест

Всё работает, круто.
А ещё сортировка по имени интерфейса появилась.

У меня ещё один фичреквест появился - улучшить форму выбора интерфейса в редакторе сервиса на договоре.
Хочется поиск по интерфейсам и/или сортировку по имени.
Иначе искать нужный неудобно.

Вложение:
iface-contract.png
iface-contract.png [ 21.57 КБ | Просмотров: 15734 ]



Кстати, туда же - список из 2800 интерфейсов на устройстве во вкладке "Устройства и ресурсы" у меня открывается секунд 8.

(v 5.2)

Автор:  Cromeshnic [ 15 окт 2013, 14:07 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест

Насчёт долгого открытия списка интерфейсов: там на каждый интерфейс создаётся и закрывается отдельный preparedStatement для поиска в базе подписчика. Мб это оптимизировать? Кэшировать этот стейтмент как-то или вообще одним запросом получать..

Автор:  Cromeshnic [ 04 июл 2014, 07:08 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест

up

Автор:  snark [ 04 июл 2014, 12:37 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест

Cromeshnic писал(а):
список из 2800 интерфейсов

Что мешало сделать папку, в папке 3 устройства с одним и тем же IP адресом и на каждом из которых 1000 интерфейсов, которые, IMHO, удобнее передвать как Gi0/0/0.$vlan, а не как $interfaceTitle.

Как много абонентов ты подключил к Nu0? :)

Автор:  Cromeshnic [ 04 июл 2014, 13:01 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест

Да там мусора куча импортировалось сразу. Надо поудалять бы..

Автор:  Cromeshnic [ 07 июл 2014, 10:29 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест

Таки UP
Сейчас пытаюсь завести руками сервис на договоре - найти в неупорядоченном списке интерфейс Te0/1/0.17110117 среди кучи подобных - анриал.

Меня инженеры живьём сожрут, когда мы в продакшене перейдём на Inet из IPN.
v 5.2

ps. Мусорные интерфейсы поудалял, легче не стало

Автор:  Cromeshnic [ 07 июл 2014, 12:36 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест

Я могу конечно попробовать переопределить класс панельки в клиентских либах (благо, Java WebStart)...
Есть смысл ждать на 5.2? И сколько?

Автор:  Cromeshnic [ 07 июл 2014, 14:56 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

Переопределил панельку, скопипастив модель списка интерфейсов из дерева устройств.
Всё работает, но такой костыль уязвляет мои религиозные чувства.
Мб всё-таки у себя так же запилите?

Код:
package ru.bitel.bgbilling.modules.inet.api.client.contract;

import ru.bitel.bgbilling.client.common.BGUPanel;
import ru.bitel.bgbilling.client.common.BGUTable;
import ru.bitel.bgbilling.client.common.ClientContext;
import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetServType;
import ru.bitel.common.RangeUtils;
import ru.bitel.common.client.AbstractBGUPanel;
import ru.bitel.common.client.BGSwingUtilites;
import ru.bitel.common.client.table.BGTableModel;
import ru.bitel.oss.systems.inventory.resource.common.DeviceInterfaceService;
import ru.bitel.oss.systems.inventory.resource.common.bean.DeviceInterface;
import ru.bitel.oss.systems.inventory.resource.common.bean.DeviceInterfaceIndex;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import java.util.List;

public class InetServDeviceInterfaceForm extends BGUPanel
{
    private DeviceInterfaceService deviceInterfaceService = (DeviceInterfaceService)((ClientContext)getContext()).getPort(DeviceInterfaceService.class);
    private final InetServForm inetServForm;
    private int interfaceId;
    private DeviceInterface initialDeviceInterface;
    private DeviceInterface deviceInterface;
    //private BGUList<DeviceInterface> result;
    private BGTableModel<DeviceInterface> result;

    AbstractBGUPanel.DefaultAction interfaceSelect =
            new AbstractBGUPanel.DefaultAction("interface.resource", "Интерфейсы")
    {
        public void actionPerformedImpl(ActionEvent e)
                throws Exception
        {
            InetServType inetServType = InetServDeviceInterfaceForm.this.inetServForm.serviceType.getSelectedItem();
            boolean personalInterface = (inetServType == null) || (inetServType.isPersonalInterface());

            List<DeviceInterface> list = InetServDeviceInterfaceForm.this.deviceInterfaceService.deviceInterfaceListFree(InetServDeviceInterfaceForm.this.inetServForm.current.getDeviceId(),
                    InetServDeviceInterfaceForm.this.inetServForm.period.getDateFrom(), InetServDeviceInterfaceForm.this.inetServForm.period.getDateTo());

            if (!personalInterface)
            {
                Set<DeviceInterface> freeInterfaces = new HashSet<DeviceInterface>();
                for (DeviceInterface aList : list) {
                    freeInterfaces.add(aList);
                }

                list = InetServDeviceInterfaceForm.this.deviceInterfaceService.devicePortList(InetServDeviceInterfaceForm.this.inetServForm.current.getDeviceId(), false);
                for (DeviceInterface iface : list) {
                    if (!freeInterfaces.contains(iface)) {
                        iface.setTitle(iface.getTitle() + " *");
                    }
                }
            }

            if ((InetServDeviceInterfaceForm.this.initialDeviceInterface != null) && (InetServDeviceInterfaceForm.this.initialDeviceInterface.getDeviceId() == InetServDeviceInterfaceForm.this.inetServForm.current.getDeviceId()))
            {
                InetServDeviceInterfaceForm.this.result.setData(list);

                if ((InetServDeviceInterfaceForm.this.deviceInterface == null) || (InetServDeviceInterfaceForm.this.deviceInterface.equals(InetServDeviceInterfaceForm.this.initialDeviceInterface)))
                {
                    //InetServDeviceInterfaceForm.this.result.setSelectedIndex(pos);
                    InetServDeviceInterfaceForm.this.result.setSelectedRow(initialDeviceInterface);
                    //InetServDeviceInterfaceForm.this.result.ensureIndexIsVisible(pos);
                }
                else
                {
                    //InetServDeviceInterfaceForm.this.result.setSelectedValue(InetServDeviceInterfaceForm.this.deviceInterface, true);
                    InetServDeviceInterfaceForm.this.result.setSelectedRow(InetServDeviceInterfaceForm.this.deviceInterface);
                }
            }
            else
            {
                InetServDeviceInterfaceForm.this.result.setData(list);
            }

            InetServDeviceInterfaceForm.this.performActionOpen();
        }
    };

    AbstractBGUPanel.DefaultAction ok = new AbstractBGUPanel.DefaultAction("ok", "Ok")
    {
        public void actionPerformedImpl(ActionEvent e)
                throws Exception
        {
            DeviceInterface selected = InetServDeviceInterfaceForm.this.result.getSelectedRow();
            if (selected != null)
            {
                InetServDeviceInterfaceForm.this.interfaceId = selected.getPort();
                InetServDeviceInterfaceForm.this.deviceInterface = selected;

                InetServDeviceInterfaceForm.this.inetServForm.iface.setText(InetServDeviceInterfaceForm.this.deviceInterface.getTitle());
            }
            else
            {
                InetServDeviceInterfaceForm.this.interfaceId = 0;
                InetServDeviceInterfaceForm.this.deviceInterface = null;

                InetServDeviceInterfaceForm.this.inetServForm.iface.setText("");
            }

            InetServDeviceInterfaceForm.this.performActionClose();
        }
    };

    public InetServDeviceInterfaceForm(InetServForm inetServForm, ActionListener actionListener)
    {
        super(new BorderLayout());
        BGSwingUtilites.wrapBorder(this, "Интерфейсы");

        this.inetServForm = inetServForm;
    }

    protected void jbInit()
    {
        //this.result = new BGUList(DeviceInterface.class);
        this.result = new BGTableModel<DeviceInterface>("port")
        {
            protected void initColumns()
            {
                addColumn("Интерфейс", -1, 120, 200, "port", true);
                addColumn("Название", -1, 180, 240, "title", true);
                addColumn("Индекс", -1, 120, 120, "port", true);
                addColumn("Статус", -1, 120, 120, null, true);
                //addColumn("Категория IP", -1, 180, 240, null, true);
                addColumn("Подписчик", -1, 200, -1, "subscriberTitle", true);
                addColumn("Комментарий", -1, 240, -1, "comment", true);
            }

            public Object getValue(DeviceInterface val, int column)
            {
                switch (column)
                {
                    case 2:
                        List<DeviceInterfaceIndex> indexList = val.getIndexList();
                        if ((indexList == null) || (indexList.size() == 0))
                        {
                            return val.getPort();
                        }

                        Date now = new Date();

                        for (DeviceInterfaceIndex index : indexList)
                        {
                            if (RangeUtils.inRange(now, now, index.getTimeFrom(), index.getTimeTo()))
                            {
                                return index.getIndex();
                            }
                        }

                        return val.getPort();
                    case 3:
                        switch (val.getStatus())
                        {
                            case 0:
                                return "зарезервирован";
                            case 1:
                                return "доступен";
                        }

                        return null;
                }

                return super.getValue(val, column);
            }
        };

        add(new JScrollPane(new BGUTable(this.result)));
    }

    public void setInterfaceId(int interfaceId)
    {
        this.interfaceId = interfaceId;

        if (interfaceId == -1)
        {
            this.initialDeviceInterface = null;
            this.deviceInterface = null;

            return;
        }

        try
        {
            this.initialDeviceInterface = this.deviceInterfaceService.devicePort(this.inetServForm.current.getDeviceId(), interfaceId);
            this.deviceInterface = this.initialDeviceInterface;
        }
        catch (BGException e)
        {
            getContext().processException(e);
        }
    }

    public int getInterfaceId()
    {
        return this.interfaceId;
    }

    public String getInterfaceTitle()
    {
        return this.deviceInterface.getTitle();
    }
}

Автор:  Cromeshnic [ 07 июл 2014, 14:58 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

Вложение:
ServDeviceIfaces.PNG
ServDeviceIfaces.PNG [ 41.59 КБ | Просмотров: 15509 ]

Автор:  snark [ 07 июл 2014, 16:12 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест

Cromeshnic писал(а):
Меня инженеры живьём сожрут, когда мы в продакшене перейдём на Inet из IPN.
v 5.2

Есть мнение, что надо ставить 6.1, т.к. для 5.2 вряд ли что-то будут пилить.

Автор:  Cromeshnic [ 07 июл 2014, 16:16 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

Есть мнение, что мне денег на 6.1 не дадут

Автор:  snark [ 07 июл 2014, 16:44 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

Cromeshnic писал(а):
мне денег на 6.1 не дадут

Если Бител пошлет, что вполне вероятно, то придется убеждать руководство любыми возможными способами, вплоть до членовредительства (но без уголовщины!).

Автор:  skyb [ 07 июл 2014, 19:23 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

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

Автор:  Cromeshnic [ 08 июл 2014, 06:12 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

2 skyb
Ты используешь cisco ip subscriber interface?

Автор:  Artur [ 08 июл 2014, 15:15 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

Правильно ли я понимаю, что необходимо добавить фильтр + сортировку интерфейсов?
Также я вижу вопрос о проблеме с долгим открытием списка интерфейсов.
Все верно? Ничего не упустил?

Автор:  Cromeshnic [ 08 июл 2014, 15:23 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

Всё верно.
По скорости: в договоре список интерфейсов открывается ~3 секунды, в дереве устройств на дом же устройстве ~ 1,5.

Автор:  Artur [ 11 июл 2014, 16:56 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

Для 6.1

Вложения:
Комментарий к файлу: панель выбора интерфейса
inet_interface_select.png
inet_interface_select.png [ 83 КБ | Просмотров: 15444 ]

Автор:  skyb [ 11 июл 2014, 17:37 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

Artur писал(а):
Для 6.1

а че в заголовке 5.3 ? ))))

Автор:  Artur [ 11 июл 2014, 17:45 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

skyb писал(а):
Artur писал(а):
Для 6.1

а че в заголовке 5.3 ? ))))


Упс...спалился

Автор:  stark [ 11 июл 2014, 17:59 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

skyb писал(а):
Artur писал(а):
Для 6.1

а че в заголовке 5.3 ? ))))


Это у нас в master-е такая версия , когда давно мы ее как 5.2 собирались выпускать, но с тех пор планы поменялись :). Она вышла как 6.1. А в master-е еще не поменяли

Автор:  skyb [ 14 июл 2014, 07:08 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

stark писал(а):
skyb писал(а):
Artur писал(а):
Для 6.1

а че в заголовке 5.3 ? ))))


Это у нас в master-е такая версия , когда давно мы ее как 5.2 собирались выпускать, но с тех пор планы поменялись :). Она вышла как 6.1. А в master-е еще не поменяли

5.3 вышла как 6.1, нехилый такой скачек))))))

Автор:  Phricker [ 14 июл 2014, 10:25 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

Изображение

Работает, но почему-то всегда оставляет для выбора самый первый интерфейс.

Автор:  Amir [ 14 июл 2014, 12:34 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

Может быть это тот что уже установлен, текущий?

Автор:  Phricker [ 14 июл 2014, 12:40 ]
Заголовок сообщения:  Re: Интерфейсы. Фич-реквест (CRM)

Фак. Точно )))
Да, тогда все прекрасно работает, при этом показывая тот, что сейчас уже установлен

Страница 1 из 2 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/