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

Получение тарифа с евента и работа с ним
http://forum.bitel.ru/viewtopic.php?f=19&t=11288
Страница 1 из 1

Автор:  skyb [ 28 янв 2016, 07:53 ]
Заголовок сообщения:  Получение тарифа с евента и работа с ним

Не могу разобраться, как с евента получить тариф и дальше работать с ним, простой скрипт, везде deprecated.
Код:
package ru.skyb.scripts.behavior;

import java.sql.Connection;
import java.util.Calendar;
import java.util.Date;

import bitel.billing.server.contract.bean.ContractManager;
import bitel.billing.server.contract.bean.ContractParameterManager;
import bitel.billing.server.contract.bean.ContractTariff;
import bitel.billing.server.contract.bean.ContractTariffManager;
import ru.bitel.bgbilling.kernel.contract.api.common.bean.ContractTariffGroup;
import ru.bitel.bgbilling.kernel.contract.api.server.bean.ContractTariffDao;
import ru.bitel.bgbilling.kernel.contract.api.server.bean.ContractTariffGroupDao;
import ru.bitel.bgbilling.kernel.event.Event;
import ru.bitel.bgbilling.kernel.event.events.ContractTariffUpdateEvent;
import ru.bitel.bgbilling.kernel.module.common.bean.User;
import ru.bitel.bgbilling.kernel.module.server.bean.UserManager;
import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;

public class ChangeTariffFuture
   extends EventScriptBase<ContractTariffUpdateEvent>
{
   @Override
   public void onEvent( ContractTariffUpdateEvent event, Setup setup, ConnectionSet set )
      throws Exception
   {
      Connection con = set.getConnection();   
      Calendar c = Calendar.getInstance();
      Calendar fourMounth = Calendar.getInstance();
      fourMounth.add(Calendar.MONTH, 4);
      c.add(Calendar.MONTH, 4);
      c.add(Calendar.DAY_OF_MONTH, -1);
      int cid = event.getContractId();
      User user = new UserManager(con).getUsersMap().get(event.getUserId());
      ContractTariffGroupDao ctgd = new ContractTariffGroupDao (con);
      ContractTariffGroup ctg = new ContractTariffGroup();
      ContractTariff ct = event.getContractTariff();
      ContractTariff ctn = new ContractTariff();
      ContractTariffManager ctm = new ContractTariffManager(con);
      
      if (ct.getTariffPlanId() == 144 && ct.getDate2() == null)
      {
         ct.setContractId(cid);
         ct.setComment("Зкрылся в " + new Date() + " пользоввателем " + user.getName());
         ct.setDate2(c);
         ctm.updateContractTariff(ct);
         ctn.setContractId(cid);
         ctn.setDate1(fourMounth);
         ctn.setPos(ct.getPos()+1);
         ctn.setComment("Установлен в " + new Date() + " пользоввателем " + user.getName());
         ctn.setTariffPlanId(120);
         ctm.updateContractTariff(ctn);
         ctg.setContractId(cid);
         ctg.setComment("Установлен в " + new Date() + " пользоввателем " + user.getName());
         ctg.setDateFrom(fourMounth.getTime());
         ctg.setTariffGroupId(1);
         ctgd.update(ctg);
         
      }
   }

}

Все поля
Код:
      ContractTariff ct = event.getContractTariff();
      ContractTariff ctn = new ContractTariff();
      ContractTariffManager ctm = new ContractTariffManager(con);
      
      if (ct.getTariffPlanId() == 144 && ct.getDate2() == null)
      {
         ct.setContractId(cid);
         ct.setComment("Зкрылся в " + new Date() + " пользоввателем " + user.getName());
         ct.setDate2(c);
         ctm.updateContractTariff(ct);
         ctn.setContractId(cid);
         ctn.setDate1(fourMounth);
         ctn.setPos(ct.getPos()+1);
         ctn.setComment("Установлен в " + new Date() + " пользоввателем " + user.getName());
         ctn.setTariffPlanId(120);
         ctm.updateContractTariff(ctn);
помечены как deprecated, если использовать ru.bitel.bgbilling.kernel.contract.api.common.bean.ContractTariff, то в в классе ru.bitel.bgbilling.kernel.event.events.ContractTariffUpdateEvent нет этого метода. Так же не понятно как на заменненый bitel.billing.server.contract.bean.ContractTariffManager, классом ru.bitel.bgbilling.kernel.contract.api.server.bean.ContractTariffDao использовать, там уже идет ru.bitel.bgbilling.kernel.contract.api.common.bean.ContractTariff которого нет в евенте. ЧЯДНТ ?
Код:
Сервер: вер. 6.2.931 / 14.08.2015 18:01:24
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45

Автор:  skyb [ 28 янв 2016, 08:01 ]
Заголовок сообщения:  Re: Получение тарифа с евента и работа с ним

Если частично убрать деприкейты получится как то так
Код:
package ru.skyb.scripts.behavior;

import java.sql.Connection;
import java.util.Calendar;
import java.util.Date;

import bitel.billing.server.contract.bean.ContractManager;
import bitel.billing.server.contract.bean.ContractParameterManager;
import bitel.billing.server.contract.bean.ContractTariff;
import bitel.billing.server.contract.bean.ContractTariffManager;
import ru.bitel.bgbilling.kernel.contract.api.common.bean.ContractTariffGroup;
import ru.bitel.bgbilling.kernel.contract.api.server.bean.ContractTariffDao;
import ru.bitel.bgbilling.kernel.contract.api.server.bean.ContractTariffGroupDao;
import ru.bitel.bgbilling.kernel.event.Event;
import ru.bitel.bgbilling.kernel.event.events.ContractTariffUpdateEvent;
import ru.bitel.bgbilling.kernel.module.common.bean.User;
import ru.bitel.bgbilling.kernel.module.server.bean.UserManager;
import ru.bitel.bgbilling.kernel.script.server.dev.EventScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;

public class ChangeTariffFuture
   extends EventScriptBase<ContractTariffUpdateEvent>
{
   @Override
   public void onEvent( ContractTariffUpdateEvent event, Setup setup, ConnectionSet set )
      throws Exception
   {
      Connection con = set.getConnection();   
      Calendar c = Calendar.getInstance();
      Calendar fourMounth = Calendar.getInstance();
      fourMounth.add(Calendar.MONTH, 4);
      c.add(Calendar.MONTH, 4);
      c.add(Calendar.DAY_OF_MONTH, -1);
      int cid = event.getContractId();
      User user = new UserManager(con).getUsersMap().get(event.getUserId());
      ContractTariffGroupDao ctgd = new ContractTariffGroupDao (con);
      ContractTariffGroup ctg = new ContractTariffGroup();
      ContractTariff ct = event.getContractTariff();
      ru.bitel.bgbilling.kernel.contract.api.common.bean.ContractTariff ctn = new ru.bitel.bgbilling.kernel.contract.api.common.bean.ContractTariff();
      ContractTariffDao ctd = new ContractTariffDao (con);
      ContractTariffManager ctm = new ContractTariffManager(con);
      
      if (ct.getTariffPlanId() == 144 && ct.getDate2() == null)
      {
         ct.setContractId(cid);
         ct.setComment("Зкрылся в " + new Date() + " пользоввателем " + user.getName());
         ct.setDate2(c);
         ctm.updateContractTariff(ct);
         ctn.setContractId(cid);
         ctn.setDateFrom(fourMounth.getTime());
         ctn.setPosition(ct.getPos()+1);
         ctn.setComment("Установлен в " + new Date() + " пользоввателем " + user.getName());
         ctn.setTariffPlanId(120);
         ctd.update(ctn);
         ctg.setContractId(cid);
         ctg.setComment("Установлен в " + new Date() + " пользоввателем " + user.getName());
         ctg.setDateFrom(fourMounth.getTime());
         ctg.setTariffGroupId(1);
         ctgd.update(ctg);
         
      }
      ctgd.recycle();
      ctd.recycle();
   }

}

но что делать с евентом я так и не понял

Автор:  skyb [ 29 янв 2016, 17:32 ]
Заголовок сообщения:  Re: Получение тарифа с евента и работа с ним

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

Автор:  skyb [ 04 фев 2016, 08:01 ]
Заголовок сообщения:  Re: Получение тарифа с евента и работа с ним

ап

Автор:  skyb [ 08 фев 2016, 17:58 ]
Заголовок сообщения:  Re: Получение тарифа с евента и работа с ним

ап

Автор:  skyb [ 10 фев 2016, 05:27 ]
Заголовок сообщения:  Re: Получение тарифа с евента и работа с ним

бамп

Автор:  Artur [ 10 фев 2016, 12:12 ]
Заголовок сообщения:  Re: Получение тарифа с евента и работа с ним

Здравствуйте.
У старого bitel.billing.server.contract.bean.ContractTariff есть метод

Код:
public static ru.bitel.bgbilling.kernel.contract.api.common.bean.ContractTariff toNew( bitel.billing.server.contract.bean.ContractTariff contractTariff )


На вход идет старый bitel.billing.server.contract.bean.ContractTariff, а на выходе получаем новый ru.bitel.bgbilling.kernel.contract.api.common.bean.ContractTariff, который можно использовать в ContractTariffDao. Надеюсь поможет.

Автор:  skyb [ 10 фев 2016, 13:25 ]
Заголовок сообщения:  Re: Получение тарифа с евента и работа с ним

Что то я не в api ненашел такого метода, и в эклипс тишина. Есть
bitel.billing.server.contract.bean.ContractTariff
public static ContractTariff toNew(ContractTariff contractTariff), в новом public static ru.bitel.bgbilling.kernel.contract.api.common.bean.ContractTariff нет такого метода

Автор:  Artur [ 10 фев 2016, 13:33 ]
Заголовок сообщения:  Re: Получение тарифа с евента и работа с ним

Я не очень понимаю, в чем у вас возникла проблема. В событие передается старый bitel.billing.server.contract.bean.ContractTariff, вы его преобразуете в новый ru.bitel.bgbilling.kernel.contract.api.common.bean.ContractTariff с помощью метода toNew() у старого, вызвав bitel.billing.server.contract.bean.ContractTariff.toNew(<передаем_сюда_то_что_пришло_в_событии>) и дальше уже используете новый bean.

Автор:  skyb [ 10 фев 2016, 13:52 ]
Заголовок сообщения:  Re: Получение тарифа с евента и работа с ним

Это видимо я не правильно понял как пользоваться методом))) Да, так стало ещё меньше деприкейтов, но все же есть

Автор:  Artur [ 10 фев 2016, 14:05 ]
Заголовок сообщения:  Re: Получение тарифа с евента и работа с ним

Главное, что пока работает =) Других вариантов пока нет, т.к. событие работает только с старым bean.

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