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(); помечены как 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 которого нет в евенте. ЧЯДНТ ?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); Код: Сервер: вер. 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/ |