forum.bitel.ru http://forum.bitel.ru/ |
|
свой Action http://forum.bitel.ru/viewtopic.php?f=19&t=10465 |
Страница 1 из 1 |
Автор: | SeGa [ 27 апр 2015, 12:27 ] |
Заголовок сообщения: | свой Action |
Подскажите как добавить свой action? Есть вот такой скрипт(до конца не допилен Код: int cid = event.getContractId(); ContractStatusManager contract_status_manager = new ContractStatusManager( con ); Contract contract = new ContractManager(con).getContractById(cid); Calendar DateNow = Calendar.getInstance(); int schDate = DateNow.get(Calendar.DAY_OF_MONTH); BalanceUtils bu = new BalanceUtils( con ); month=bitel.billing.common.TimeUtils.getPrevDay(bitel.billing.common.TimeUtils.getStartMonth (bitel.billing.common.TimeUtils.convertCalendarToDate(DateNow))); if (schDate<21) { contract_balance = bu.getBalanceSumma1 (month, cid); bu.close(); String sql = " SELECT sum(cp.summa) FROM contract_payment as cp left join contract on contract.id=cp.cid where cp.dt > \""+bitel.billing.common.TimeUtils.formatSQLDate(bitel.billing.common.TimeUtils.getStartMonth(month))+"\" and cp.dt <= \""+bitel.billing.common.TimeUtils.formatSQLDate(DateNow)+"\" and cp.cid="+cid; PreparedStatement ps = con.prepareStatement( sql ); ResultSet rs = ps.executeQuery(); while(rs.next()) { String pm = rs.getString ( 1 ); print ("SQL Запрос: "+sql); print ("Сумма платежей: "+pm); BigDecimal sum = new BigDecimal(pm.toString()); BigDecimal balance=contract_balance.add(sum); if (balance.compareTo( new BigDecimal("0.00") )>= 0 && contract.getStatus()!=0) { } } } мне нужно что бы при открытии https://url:8080/bgbilling/executer?use ... wd&module=какой_то_модуль&action=мой_экшен&cid=37409 выводилось что то типа как при открытии http://url:8080/bgbilling/executer?user ... &cid=37409 Цитата: Информация о версии:
Сервер: вер. 6.1.1018 / 25.12.2014 18:48:07 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.7.0_71 |
Автор: | dimOn [ 27 апр 2015, 12:47 ] |
Заголовок сообщения: | Re: свой Action |
http://wiki.bitel.ru/index.php/%D0%9F%D ... 0%BE%D0%B2 что именно не получается? |
Автор: | SeGa [ 27 апр 2015, 14:08 ] |
Заголовок сообщения: | Re: свой Action |
На сколько я понял, там идет замена стандартного экшена на свой, а мне нужно добавить новый вот к примеру у меня динкод ru.test.Balance мне нужно что бы оно выполнялось http://URL:8080/bgbilling/executer?user ... estBalance в конфиге прописываю dynaction:contract.TestBalance=ru.test.Balance и ничего не работит Upd Затупил, вроде разобрался, а как вывести результат в виде xml? |
Автор: | dimOn [ 27 апр 2015, 14:29 ] |
Заголовок сообщения: | Re: свой Action |
И "замена" и новый одинаково работает, можно точно так же добавить новый экшен. Какой результат то вывести, вы в коде никакого результата вообще не формируете. Чтобы вывести xml нужно его в экшене сформировать в нужном виде) Стандартный способ - конструирование dom над rootNode, который доступен в родительском ActionBase Например: Код: Element table = createElement( rootNode, "table" ); table.setAttribute( "foo", "bar" ); Ну итд любую структуру нужную |
Автор: | SeGa [ 27 апр 2015, 14:34 ] |
Заголовок сообщения: | Re: свой Action |
Теперь более-менее понятно, спасибо |
Автор: | SeGa [ 27 апр 2015, 16:26 ] |
Заголовок сообщения: | Re: свой Action |
Вопрос не много не в тему, но как получить данные которые выдает module=contract&action=ContractParameters&cid=cid ? |
Автор: | dimOn [ 27 апр 2015, 16:59 ] |
Заголовок сообщения: | Re: свой Action |
Цитата: Вопрос не много не в тему, но как получить данные которые выдает module=contract&action=ContractParameters&cid=cid ? по ссылке это тоже есть: String comment = getParameter( "comment", "" ); int id = getIntParameter( "id", -1 ); итд ну module и action будет у вас фиксированными, это понятно, наверно а cid сразу доступен в наследниках ActionBase (просто как переменная cid) |
Автор: | SeGa [ 27 апр 2015, 17:17 ] |
Заголовок сообщения: | Re: свой Action |
dimOn писал(а): Цитата: Вопрос не много не в тему, но как получить данные которые выдает module=contract&action=ContractParameters&cid=cid ? по ссылке это тоже есть: String comment = getParameter( "comment", "" ); int id = getIntParameter( "id", -1 ); итд ну module и action будет у вас фиксированными, это понятно, наверно а cid сразу доступен в наследниках ActionBase (просто как переменная cid) Наверное не правильно вопрос задал... В общем не нужно посмотреть исходник ActionContractParameters, как оно получает pidы параметров договора и выводит параметры |
Автор: | Phricker [ 27 апр 2015, 17:20 ] |
Заголовок сообщения: | Re: свой Action |
http://jd.benow.ca/ Код: package bitel.billing.server.contract.action;
import bitel.billing.server.ActionBase; import bitel.billing.server.contract.bean.ContractUtils; import java.sql.SQLException; import org.w3c.dom.Element; import ru.bitel.bgbilling.common.BGException; import ru.bitel.bgbilling.common.BGIllegalArgumentException; import ru.bitel.bgbilling.kernel.contract.api.common.bean.ContractParameterGroupName; import ru.bitel.bgbilling.kernel.contract.api.server.bean.ContractParameterGroupNameDao; public class ActionContractParameters extends ActionBase { public void doAction() throws SQLException, BGException { boolean groupFlag = getIntParameter("all", 0) != 1; if (this.cid < 0) { this.cid = getIntParameter("id", -1); } if (this.cid < 0) { throw new BGIllegalArgumentException(); } if (getIntParameter("list", 0) == 1) { Element groups = createElement(this.rootNode, "groups"); addListItem(groups, "0", "---------------"); for (ContractParameterGroupName groupName : new ContractParameterGroupNameDao(this.con).list()) { addListItem(groups, groupName.getId(), groupName.getTitle()); } } Element parameters = createElement(this.rootNode, "parameters"); new ContractUtils(this.con).addContractParameters(this.cid, groupFlag, parameters, this.rootNode, this.userID.intValue()); } } |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |