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

Возврат значения getListParamValue в разных версиях биллинга
http://forum.bitel.ru/viewtopic.php?f=19&t=8950
Страница 1 из 1

Автор:  abu [ 13 фев 2014, 05:53 ]
Заголовок сообщения:  Возврат значения getListParamValue в разных версиях биллинга

Пишу скрипт, в котором в зависимости от значения параметра-списка договора ("Да" или "Нет") выполняется условие. Для получения параметра использую getListParamValue. При этом:

- на рабочем биллинге версии 6.0 сборка 1230 возвращается значение pid'a, вместо значения:

Код:
Connection con = connectionSet3.getConnection();
ContractParameterManager cpm = new ContractParameterManager(con);
String str=cpm.getListParamValue(cid,61);
print (str);

OUT:
61


- на тестовом биллинге версии 6.0 сборка 1271 возвращается значение параметра (равное "Нет", то, что мне нужно):

Код:
Connection con = connectionSet3.getConnection();
ContractParameterManager cpm = new ContractParameterManager(con);
String str=cpm.getListParamValue(cid,61);
print (str);

OUT:
Нет


Обновлять биллинг пока не планируется, возможно ли как-то обойти эту проблему без обновления версии?

Автор:  barguzin2 [ 13 фев 2014, 08:41 ]
Заголовок сообщения:  Re: Возврат значения getListParamValue в разных версиях билл

Версию точно сервера указали? Похоже на версию клиента клиента.

Автор:  abu [ 13 фев 2014, 08:58 ]
Заголовок сообщения:  Re: Возврат значения getListParamValue в разных версиях билл

Действительно, ошибся. Версия рабочего сервера:

Сервер: вер. 6.0 сборка 1567 от 23.08.2013 15:56:05
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_35

Версия тестового сервера:

Сервер: вер. 6.0 сборка 1646 от 13.12.2013 17:33:19
os: Linux; java: Java HotSpot(TM) Client VM, v.1.6.0_35

Автор:  barguzin2 [ 13 фев 2014, 12:46 ]
Заголовок сообщения:  Re: Возврат значения getListParamValue в разных версиях билл

Ой, чё-то сильно сомневаюсь. Это же серверный класс, который используется для вывода значений списковых параметров в карточке договора. Если бы с ним было что-то не так, то в договоре имели бы тоже хрень.

К тому же у вас неполный код и непонятно всё-ли идентично в обоих биллингах.

Автор:  skyb [ 13 фев 2014, 12:49 ]
Заголовок сообщения:  Re: Возврат значения getListParamValue в разных версиях билл

barguzin2 писал(а):
Ой, чё-то сильно сомневаюсь. Это же серверный класс, который используется для вывода значений списковых параметров в карточке договора. Если бы с ним было что-то не так, то в договоре имели бы тоже хрень.

К тому же у вас неполный код и непонятно всё-ли идентично в обоих биллингах.

буквально не так давно у меня таже проблема была, это api кривой(у меня по крайнеймере был)поэтому не стоит исключать этот вариант ;-)

Автор:  abu [ 13 фев 2014, 13:08 ]
Заголовок сообщения:  Re: Возврат значения getListParamValue в разных версиях билл

barguzin2
А какая должна быть идентичность в биллинге? Как ее проверить? На тестовой машине тот же самый биллинг, обновленный до указанной версии. Полный код простой, событие на смену параметра договора:

Код:
import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;
import ru.bitel.bgbilling.kernel.event.Event;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;
import bitel.billing.common.TimeUtils;
import ru.bitel.bgbilling.kernel.event.events.ContractCreatedEvent;
import bitel.billing.server.npay.bean.ServiceObjectManager;
import bitel.billing.server.npay.bean.ServiceObject;
import java.sql.*;
import java.util.Date;
import bitel.billing.server.contract.bean.*;


public class myclass
   extends EventScriptBase
{
   @Override
   public void onEvent( Event event1, Setup setup2, ConnectionSet connectionSet3 )
      throws Exception
   {

Connection con = connectionSet3.getConnection();
ContractParameterManager cpm = new ContractParameterManager(con);

int cid = event1.getContractId();
String str=cpm.getListParamValue(cid,61);
print (str);

if (str.equals("Да"))
{print("Да");}
if (str.equals("Нет")) {print( "Нет"); }
   }
}


Если "API кривой", то можно ли как-то другим способом получить значение параметра?

Автор:  skyb [ 13 фев 2014, 13:19 ]
Заголовок сообщения:  Re: Возврат значения getListParamValue в разных версиях билл

barguzin2 http://forum.bitel.ru/viewtopic.php?f=22&t=8489&p=69345
можно получить через sql запрос же

Автор:  dimOn [ 13 фев 2014, 13:58 ]
Заголовок сообщения:  Re: Возврат значения getListParamValue в разных версиях билл

Да, этот метод много лет, до сентября 2013 возвращал pid. Потом поправили. В чём сейчас вопрос то) Можно напрямую через sql запрос. Вот код примерный

Код:
            String query = "SELECT if ( cp.val < 1, cp.custom_value, vls.title ) FROM contract_parameter_type_7 as cp LEFT JOIN contract_parameter_type_7_values as vls ON vls.id=cp.val WHERE cid=? AND cp.pid=?";
            PreparedStatement ps = con.prepareStatement( query );
            ps.setInt( 1, cid );
            ps.setInt( 2, pid );
           ResultSet rs = ps.executeQuery();
            if ( rs.next() )
            {
                result = rs.getString( 1 );
            }
            rs.close();
            ps.close();

Автор:  barguzin2 [ 13 фев 2014, 14:53 ]
Заголовок сообщения:  Re: Возврат значения getListParamValue в разных версиях билл

ну, как вариант, все таки обновиться можно :)

Автор:  abu [ 13 фев 2014, 15:26 ]
Заголовок сообщения:  Re: Возврат значения getListParamValue в разных версиях билл

Действительно, про sql я и забыл, принялся думать в сторону получения списка параметров договора и поиска нужного параметра в нем (:

Спасибо за ответы.

Автор:  barguzin2 [ 14 фев 2014, 08:10 ]
Заголовок сообщения:  Re: Возврат значения getListParamValue в разных версиях билл

Так весь API на своей кухне выполняет SQL-запросы, и порой бывает эффективнее составить специфический запрос, чем использовать последовательность функций API. Поэтому хорошее знание структуры БД БГ не помешает.

dimOn писал(а):
Да, этот метод много лет, до сентября 2013 возвращал pid. ...

т.е. даже не числовое значение спискового параметра val из таблицы contract_parameter_type_7, а тупо код самого параметра (return pid), который передается в метод аргументом ? В чём тайная суть ?

Автор:  dimOn [ 14 фев 2014, 13:52 ]
Заголовок сообщения:  Re: Возврат значения getListParamValue в разных версиях билл

barguzin2 писал(а):
dimOn писал(а):
Да, этот метод много лет, до сентября 2013 возвращал pid. ...

т.е. даже не числовое значение спискового параметра val из таблицы contract_parameter_type_7, а тупо код самого параметра (return pid), который передается в метод аргументом ? В чём тайная суть ?

ошибка там была в запросе, перепутаны параметры в SELECT.

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