BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 19 июн 2025, 23:02

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
СообщениеДобавлено: 15 янв 2015, 21:20 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
На событие "Изменяется сервис договора" повесил скрипт, в котором по данным сервиса генерирую комментарий. В скрипте к текущему комментарию добавляю свои данные.
В результате, если при сохранении сервиса в текущем комментарии указать что-нибудь, например, слово "тест", то после сохранения и открытия сервиса комментарий отображается нормально. Если при сохранении указать пустой комментарий, то после сохранения и открытия сервиса комментарий отображается серым цветом и курсивом, а при клике на комментарий он вовсе исчезает. Если закрыть/открыть договор, то комментарий отображается нормально и никуда не исчезает.

Собственно, что это? Курсивом показывает точно не мой скрипт.


Вложения:
Комментарий 2.png
Комментарий 2.png [ 3.12 КБ | Просмотров: 3500 ]
Комментарий 1.png
Комментарий 1.png [ 2.63 КБ | Просмотров: 3500 ]

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 янв 2015, 12:04 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
не понял, как связан скрипт и сохранение .


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 янв 2015, 12:10 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Скрипт повешен на событие "Изменяется сервис договора", которое вызывается при сохранении сервиса.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 янв 2015, 12:39 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
покажите код скрипта


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 янв 2015, 13:41 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Код:
package ru.xxx.inet;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;

import bitel.billing.common.IPUtils;
import bitel.billing.server.contract.bean.Contract;
import bitel.billing.server.contract.bean.ContractManager;
import ru.bitel.bgbilling.kernel.script.server.dev.EventScript;
import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetDevice;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetDeviceType;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetInterface;
import ru.bitel.bgbilling.modules.inet.api.common.bean.InetServ;
import ru.bitel.bgbilling.modules.inet.api.server.bean.InetDeviceDao;
import ru.bitel.bgbilling.modules.inet.api.server.bean.InetDeviceTypeDao;
import ru.bitel.bgbilling.modules.inet.api.server.event.InetServChangingEvent;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.Utils;
import ru.bitel.common.sql.ConnectionSet;

/**
 * <p>Генерирует логин и комментарий для сервисов модуля Inet и IPoE.</p>
 * <p>Компилировать и запускать нужно из динамического кода клиента биллинга.
 * Динамический код нужно привязать к событиям "Модуль Интернет => Изменяется сервис договора" и
 * "Модуль IPoE => Изменяется сервис договора" на вкладке "Функции скриптов поведения".</p>
 * @author "vkulakov <vkulakov@xxx.ru>"
 */
public class LoginGenerator extends EventScriptBase<InetServChangingEvent> implements EventScript<InetServChangingEvent> {
   private Connection conn;

   private int SUBNET_TYPE_ID = 4;
   private int IPOE_MODULE_ID = 27;
   private String IPOE_PASSWORD = "xxx";

   @Override
   public void onEvent(InetServChangingEvent event, Setup setup, ConnectionSet connectionSet) throws Exception {
      conn = connectionSet.getConnection();

      ContractManager cm = new ContractManager(conn);

      Contract contract = cm.getContractById(event.getContractId());
      InetServ service = event.getInetServ();

      cm.recycle();

      String login = service.getLogin();
      if(event.getModuleId() != IPOE_MODULE_ID && service.getTypeId() != SUBNET_TYPE_ID && (login.isEmpty() || login.equals("999999"))) {
         String prefix = contract.getTitle();
         login = prefix;

         PreparedStatement ps = connectionSet.getConnection().prepareStatement("SELECT id FROM inet_serv_" + event.getModuleId() + " WHERE login = ?");
         for(int i = 0; true; i++, login = prefix + "_" + i) {
            ps.setString(1, login);
            ResultSet rs = ps.executeQuery();

            if(!rs.first() || rs.getInt("id") == service.getId()) {
               service.setLogin(login);
               break;
            }
         }

         return;
      }

      if(event.getModuleId() == IPOE_MODULE_ID) {
         InetDeviceDao dd = new InetDeviceDao(conn, event.getModuleId());
         InetDeviceTypeDao td = new InetDeviceTypeDao(conn, event.getModuleId());

         InetDevice device = dd.get(service.getDeviceId());
         InetDeviceType deviceType = td.get(device.getDeviceTypeId());

         td.recycle();
         dd.recycle();

         InetInterface iface = null;
         for(InetInterface i : deviceType.getInterfaceList()) {
            if(i.getId() == service.getInterfaceId()) {
               iface = i;
               break;
            }
         }

         StringBuilder sb = new StringBuilder("nas-port");

         sb.append(":");
         sb.append(device.getHost().split(":")[0]);

         if(iface == null) {
            event.setError("Не задан интерфейс для сервиса");
            return;
         }
         sb.append(":");
         sb.append(iface.getTitle());

         List<String> identifiers = service.getIdentifierList();
         if(identifiers == null || identifiers.isEmpty()) {
            event.setError("Не заданы VLAN'ы для сервиса");
            return;
         }
         if(identifiers.size() > 1) {
            event.setError("Задано слишком много VLAN'ов для сервиса");
            return;
         }
         sb.append("/");
         sb.append(identifiers.get(0));

         PreparedStatement ps = conn.prepareStatement(""
               + "SELECT"
               + "     id"
               + " FROM"
               + "     inet_serv_" + event.getModuleId()
               + " WHERE"
               + "     deviceId = ? AND"
               + "     interfaceId = ? AND"
               + "     identifier = ?");
         ps.setInt(1, service.getDeviceId());
         ps.setInt(2, service.getInterfaceId());
         ps.setString(3, identifiers.get(0));

         ResultSet rs = ps.executeQuery();
         if(rs.first() && rs.getInt("id") != service.getId()) {
            event.setError("Сервис с такими VLAN'ами уже существует: " + contract.getTitle());
            return;
         }            

         String c = service.getComment();

         StringBuilder comment;
         if(Utils.isBlankString(c)) {
            comment = new StringBuilder("");
         } else {
            comment = new StringBuilder(c.replaceAll("(?s)---.*?IP.*?Маска.*?Шлюз.*?DNS.*?---\\s*", "").trim());
         }

         int addressFrom = Utils.convertBytesToInt(service.getAddressFrom());
         int addressTo = Utils.convertBytesToInt(service.getAddressTo());
         if(addressTo - addressFrom < 3) {
            event.setError("Задана слишком маленькая подсеть для сервиса");
            return;
         }

         comment.append("\n---\n");

         comment.append("IP: ");
         if(addressTo - addressFrom == 3) {
            comment.append(IPUtils.convertIpToString(addressFrom + 2));
         } else {
            comment.append(IPUtils.convertIpToString(addressFrom + 2));
            comment.append(" - ");
            comment.append(IPUtils.convertIpToString(addressTo - 1));            
         }
         comment.append("\n");

         comment.append("Маска: ");
         comment.append(IPUtils.convertIpToString(~(addressFrom ^ addressTo)));
         comment.append("\n");

         comment.append("Шлюз: ");
         comment.append(IPUtils.convertIpToString(addressFrom + 1));
         comment.append("\n");

         comment.append("DNS: ");
         comment.append("x.x.x.x, x.x.x.x");
         comment.append("\n");

         comment.append("---");         
         comment.append("\n");

         if(comment.length() > 250) {
            event.setError("Задан слишком длинный комментарий для сервиса - " + comment.length());
            return;
         }

         service.setLogin(sb.toString());
         service.setPassword(IPOE_PASSWORD);
         service.setComment(comment.toString());

         return;
      }
   }
}

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 янв 2015, 16:43 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Что скажете?

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 янв 2015, 19:11 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Похоже, проблема в самом компоненте отображения. Исправим в ближайшее время.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 янв 2015, 18:39 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
В следующем билде должно быть нормально.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 янв 2015, 13:17 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Спасибо, если не забуду - проверю.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.047s | 36 Queries | GZIP : On ]