BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: updateAddressParam [6.2]
СообщениеДобавлено: 13 май 2015, 19:29 
Не в сети
Аватара пользователя

Зарегистрирован: 12 июл 2010, 21:22
Сообщения: 319
Карма: 11
Добрый день!

Пытаюсь обновить адрес у договора:
Код:
ContractAddressParamValue addressValue = new ContractAddressParamValue();
addressValue.setHouseId(161);
addressValue.setFlat("5");
addressValue.setFloor(1);
addressValue.setComment("Коммент");
addressValue.setPod(1);
addressValue.setRoom("12");
cpm.updateAddressParam(bgContract.getId(), PARAM_ADDRESS, addressValue, USER_ID);

Ноо для того чтоб адрес отобразился в клиенте bgbilling нужно:
Код:
addressValue.setAddress("Тут сформированная строка адреса");

Сформировать эту строку можно, через AddressUtils.getAddress, сформировав AddressStruct.
Может есть способ проще сформировать AddressStruct???

_________________
Код:
    Клиент: вер. 6.2.874 / 05.02.2018 12:48:36
    os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_151
  Сервер: вер. 6.2.1203 / 05.02.2018 12:50:34
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: updateAddressParam [6.2]
СообщениеДобавлено: 14 май 2015, 03:40 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
нету :-(

как вариант вызвать Акшен UpdateAddressInfo


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: updateAddressParam [6.2]
СообщениеДобавлено: 14 май 2015, 09:27 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
skn писал(а):
нету :-(

как вариант вызвать Акшен UpdateAddressInfo

с примерами бы =)

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: updateAddressParam [6.2]
СообщениеДобавлено: 14 май 2015, 13:15 
Не в сети
Разработчик

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

как вариант вызвать Акшен UpdateAddressInfo

с примерами бы =)


Action не очень удобно вызывать из нашего кода. Проще оставить пока как есть. Когда-нибудь мы переделаем это на Web-сервисы, будет проще.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: updateAddressParam [6.2]
СообщениеДобавлено: 14 май 2015, 14:05 
Не в сети
Аватара пользователя

Зарегистрирован: 12 июл 2010, 21:22
Сообщения: 319
Карма: 11
stark писал(а):
skyb писал(а):
skn писал(а):
нету :-(

как вариант вызвать Акшен UpdateAddressInfo

с примерами бы =)


Action не очень удобно вызывать из нашего кода. Проще оставить пока как есть. Когда-нибудь мы переделаем это на Web-сервисы, будет проще.

Эээх пичаль, беда. Буду формировать через AddressUtils значит, думал что раз в клиенте эта строка формируется, то и метод есть который данную строку формирует.

_________________
Код:
    Клиент: вер. 6.2.874 / 05.02.2018 12:48:36
    os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_151
  Сервер: вер. 6.2.1203 / 05.02.2018 12:50:34
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: updateAddressParam [6.2]
СообщениеДобавлено: 14 май 2015, 16:24 
Не в сети
Аватара пользователя

Зарегистрирован: 12 июл 2010, 21:22
Сообщения: 319
Карма: 11
Так к сведению, объект Street не возвращает индекс, который нужен при создании дома. Хотя в табличке address_street он хранится.

_________________
Код:
    Клиент: вер. 6.2.874 / 05.02.2018 12:48:36
    os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_151
  Сервер: вер. 6.2.1203 / 05.02.2018 12:50:34
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: updateAddressParam [6.2]
СообщениеДобавлено: 14 май 2015, 17:44 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
borin писал(а):
Так к сведению, объект Street не возвращает индекс, который нужен при создании дома. Хотя в табличке address_street он хранится.


это устаревшее поле, сейчас индекс храниться в параметрах справочника улиц


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: updateAddressParam [6.2]
СообщениеДобавлено: 14 май 2015, 17:53 
Не в сети
Аватара пользователя

Зарегистрирован: 12 июл 2010, 21:22
Сообщения: 319
Карма: 11
skn писал(а):
borin писал(а):
Так к сведению, объект Street не возвращает индекс, который нужен при создании дома. Хотя в табличке address_street он хранится.


это устаревшее поле, сейчас индекс храниться в параметрах справочника улиц

Не вопрос пусть даже и так, но формируя строку для setAddress, нам этот индекс надо откуда-то вытащить, а вариант всего один, запрос к базе, потому что ни House, ни Street не возвращают его.

_________________
Код:
    Клиент: вер. 6.2.874 / 05.02.2018 12:48:36
    os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_151
  Сервер: вер. 6.2.1203 / 05.02.2018 12:50:34
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: updateAddressParam [6.2]
СообщениеДобавлено: 14 май 2015, 18:26 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
borin писал(а):
skn писал(а):
borin писал(а):
Так к сведению, объект Street не возвращает индекс, который нужен при создании дома. Хотя в табличке address_street он хранится.


это устаревшее поле, сейчас индекс храниться в параметрах справочника улиц

Не вопрос пусть даже и так, но формируя строку для setAddress, нам этот индекс надо откуда-то вытащить, а вариант всего один, запрос к базе, потому что ни House, ни Street не возвращают его.


index это свойство объекта AddressHouse
вы его где и как получаете?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: updateAddressParam [6.2]
СообщениеДобавлено: 14 май 2015, 18:49 
Не в сети
Аватара пользователя

Зарегистрирован: 12 июл 2010, 21:22
Сообщения: 319
Карма: 11
skn писал(а):
borin писал(а):
skn писал(а):
borin писал(а):
Так к сведению, объект Street не возвращает индекс, который нужен при создании дома. Хотя в табличке address_street он хранится.


это устаревшее поле, сейчас индекс храниться в параметрах справочника улиц

Не вопрос пусть даже и так, но формируя строку для setAddress, нам этот индекс надо откуда-то вытащить, а вариант всего один, запрос к базе, потому что ни House, ни Street не возвращают его.


index это свойство объекта AddressHouse
вы его где и как получаете?

Ну как то вот так получилось. Может конечно, не те методы использую.
Код:
    private void updateAddress(Setup setup1, Connection connection, ContractParameterManager cpm, Contract bgContract, AtirraContract atirraContract) throws Exception {
        String streetShort = atirraContract.getStreetShort();
        String streetName = atirraContract.getStreetName();
        String houseStr = atirraContract.getHouseNo();
        Integer qFlat = atirraContract.getqFlat();

        Integer houseNo = 0;
        String houseFrac = "";
        if (houseStr.matches("^[0-9]+$")){
            houseNo = Integer.parseInt(houseStr);
        } else {
            houseFrac = houseStr.replaceAll("^[0-9]+", "");
            try{
                houseNo = Integer.parseInt(houseStr.replaceAll(houseFrac + "$", ""));
            } catch (Exception e){
                // действий не требуется
            }
        }

        Street bgStreet = getStreet(streetShort, streetName);
        String postIndex = getStreetIndex(connection, bgStreet.getId());
        House bgHouse = getHouse(bgStreet.getId(), houseNo, houseFrac, qFlat, postIndex);

        AddressStruct addressStruct = new AddressStruct();
        addressStruct.setCity(bgHouse.getCityTitle());
        addressStruct.setStreet(bgStreet.getTitle());
        addressStruct.setHouseId(bgHouse.getId());
        addressStruct.setHouse(bgHouse.getHouseFrac());
        addressStruct.setIndex(bgHouse.getPostIndex());
        addressStruct.setFlat(atirraContract.getFlatNo());
        addressStruct.setFloor(atirraContract.getFloor());
        addressStruct.setPod(atirraContract.getPorch());
        addressStruct.setRoom("");

        ContractAddressParamValue addressValue = new ContractAddressParamValue();
        addressValue.setHouseId(bgHouse.getId());
        addressValue.setFlat(atirraContract.getFlatNo());
        addressValue.setFloor(Integer.parseInt(atirraContract.getFloor()));
        addressValue.setPod(Integer.parseInt(atirraContract.getPorch()));
        addressValue.setRoom("");
        addressValue.setAddress(AddressUtils.getAddress(setup1.getBundlePreferences(), addressStruct, null));
        cpm.updateAddressParam(bgContract.getId(), PARAM_ADDRESS, addressValue, USER_ID);
    }

    private Street getStreet(String atirraStreetShort, String atirraStreetName) throws Exception {
        if (atirraStreetShort.equals("мкр-н")) atirraStreetShort = "мкр.";

        String streetName = atirraStreetShort + " " + atirraStreetName;
        ServerContext context = ServerContext.get();
        AddressService addressService = context.getService(AddressService.class, 0);
        List<Street> streets = addressService.streetList(CITY_ID, streetName);
        if (streets.size() == 1){
            return streets.get(0);
        } else {
            throw new Exception(streetName + " не существует.");
        }
    }

    private String getStreetIndex(Connection connection, Integer streetId) throws SQLException {
        String index = "";
        String query = "SELECT p_index FROM address_street WHERE id=?";
        PreparedStatement ps = connection.prepareStatement(query);
        ps.setInt(1, streetId);
        ResultSet rs = ps.executeQuery();
        rs.next();
        if (rs.getRow() == 1){
            index = rs.getString("p_index");
        }
        rs.close();
        ps.close();

        return index;
    }

    private House getHouse(Integer streetId, Integer houseNo, String houseFrac, Integer qFlat, String postIndex) throws BGException {
        ServerContext context = ServerContext.get();
        AddressService addressService = context.getService(AddressService.class, 0);
        List<House> houses = addressService.houseList(CITY_ID, 0, streetId, 0, houseNo, houseFrac, null);
        if (houses.size() == 1){
            return houses.get(0);
        } else {
            House house = new House();
            house.setHouse(houseNo);
            house.setFrac(houseFrac);
            house.setStreetId(streetId);
            house.setAmount(qFlat);
            house.setPostIndex(postIndex);
            addressService.houseUpdate(house);
            return house;
        }
    }

_________________
Код:
    Клиент: вер. 6.2.874 / 05.02.2018 12:48:36
    os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_151
  Сервер: вер. 6.2.1203 / 05.02.2018 12:50:34
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: updateAddressParam [6.2]
СообщениеДобавлено: 14 май 2015, 19:25 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
вы используете объекты из плагина cladr, а параметры договора используют bitel.billing.server.admin.bean.AddressHouse


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: updateAddressParam [6.2]
СообщениеДобавлено: 15 май 2015, 12:22 
Не в сети
Аватара пользователя

Зарегистрирован: 12 июл 2010, 21:22
Сообщения: 319
Карма: 11
skn писал(а):
вы используете объекты из плагина cladr, а параметры договора используют bitel.billing.server.admin.bean.AddressHouse

Что то появилось больше вопросов чем ответов:
1) Индекс - поясните по этому полю. В клиенте BGBilling индекс указывается в двух местах, первое Адрес-Улицы, второе Адрес-дома. При создании дома клиент BGBilling автоматически подставляет этот индекс, видимо берет его из справочника улиц. При создании дома через API нужен индекс!!!
2) Если нужно использовать AddressHouse, то для манипулирования используем класс AddressManager, но он не рабочий. Не смог добавить дом через него:
Код:
public class TestAddress
        extends GlobalScriptBase {
    final Integer CITY_ID = 2;

    @Override
    public void execute(Setup setup, ConnectionSet connectionSet)
            throws Exception {
        Connection connection = connectionSet.getConnection();
        AddressManager addressManager = new AddressManager(connection, setup);
        AddressHouse addressHouse = new AddressHouse();
        addressHouse.setStreetId(137);
        addressHouse.setAmount(10);
        addressHouse.setHouse(25);
        addressHouse.setFrac("A");
        addressHouse.setDate(new Date());
        addressManager.addHouse(addressHouse);
    }
}

Получаю:
Код:
java.sql.SQLException: No value specified for parameter 10

Смотрю AddressManager.class, ищу метод addHouse
Код:
public void addHouse(AddressHouse house) {
        try {
            String e = "INSERT INTO address_house ( areaid, quarterid, streetid, house, frac, box_index, amount, comment, dt) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
            PreparedStatement ps = this.con.prepareStatement(e);
            byte idx = 1;
            int var7 = idx + 1;
            ps.setInt(idx, house.getAreaId());
            ps.setInt(var7++, house.getQuarterId());
            ps.setInt(var7++, house.getStreetId());
            ps.setInt(var7++, house.getHouse());
            ps.setString(var7++, house.getFrac());
            ps.setString(var7++, house.getBoxIndex());
            ps.setInt(var7++, house.getAmount());
            ps.setString(var7++, house.getComment());
            ps.setDate(var7, TimeUtils.convertDateToSqlDate(house.getDate()));
            ps.executeUpdate();
            int houseId = ServerUtils.lastInsertId(this.con);
            house.setId(houseId);
            ps.close();
        } catch (Exception var6) {
            var6.printStackTrace();
        }

    }

Параметров 10, а устанавливается всего 9 значений.
3) Вообще так и не понял как через AddressManager, найти id улицы по наименованию, как найти дом по id улицы и наименованию дома.
4) И чтоб AdressHouse вернул индекс, его ведь нужно туда добавить. Но при создании дома получить индекс улицы можно только через обращение к БД. Через API это не сделать. Ну или я не нашел как.

_________________
Код:
    Клиент: вер. 6.2.874 / 05.02.2018 12:48:36
    os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_151
  Сервер: вер. 6.2.1203 / 05.02.2018 12:50:34
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: updateAddressParam [6.2]
СообщениеДобавлено: 15 май 2015, 19:43 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
1-2) пофиксили AddressManager.addHouse(...)
3) получить id по названию нельзя, можно получить список через AddressManager.searchStreetList и если вернулась одна запись из нее взять id
4) в редакторе, при добавление дома, индекс не подставляется по умолчанию, там реализован механизм, по которому при вводе номера дома, индекс ищется в плагине Кладр, раньше была возможность индекс задавать в параметре улицы в формате диапазон_домов1:индек1;диапазон_домов2:индек2 и т.д. Поле индекс у улицы не используется.


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

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


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

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


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

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