Class LicenseManager

java.lang.Object
ru.bitel.bgbilling.modules.license.server.bean.LicenseManager

public class LicenseManager
extends java.lang.Object
Класс-менеджер для обработки экшэнов лицензии
  • Field Summary

    Fields
    Modifier and Type Field Description
    protected java.sql.Connection con  
    protected org.apache.logging.log4j.Logger log  
    protected java.lang.String mid  
    protected int moduleId  
    protected static java.lang.String SQL_ALL  
    protected static java.lang.String SQL_AND  
    protected static java.lang.String SQL_DELETE  
    protected static java.lang.String SQL_DISTINCT  
    protected static java.lang.String SQL_FROM  
    protected static java.lang.String SQL_GROUP_BY  
    protected static java.lang.String SQL_IN  
    protected static java.lang.String SQL_INSERT  
    protected static java.lang.String SQL_JOIN  
    protected static java.lang.String SQL_LEFT_JOIN  
    protected static java.lang.String SQL_NOT_IN  
    protected static java.lang.String SQL_ON  
    protected static java.lang.String SQL_ORDER_BY  
    protected static java.lang.String SQL_SELECT  
    protected static java.lang.String SQL_SET  
    protected static java.lang.String SQL_UPDATE  
    protected static java.lang.String SQL_WHERE  
  • Constructor Summary

    Constructors
    Constructor Description
    LicenseManager​(java.sql.Connection con, int moduleId)  
  • Method Summary

    Modifier and Type Method Description
    boolean checkCopyItemStatus​(int copyItemId)
    Проверяет, является ли статус для заказа данного компонента "выполнен" (если куплен) или "подтвержден" (если тестовый)
    boolean checkHaveNonSignAdditionalAgreement​(int copyId)
    Проверка, есть ли не подписанный допик.
    protected void closeConnection​(java.sql.Connection con)  
    int createLicense​(License lic)  
    void createTestCopiesForOrder​(Order order, int term, int count)  
    void deleteAdditionalAgreement​(int idAdditionalAgreement)
    Удалит доп. соглашение из базе
    void deleteComponent​(int id)  
    void deleteComponents​(int productId)  
    void deleteOrder​(int orderId)  
    void deleteProduct​(int pid)  
    java.util.List<ContractData> doContractData​(int productId, int componentId)
    select distinct c.id, title, c.comment from lic_order_154 as a left join lic_copy_154 as b on a.copy_id=b.id and product_id=20 left join contract as c on c.id=contract_id where component_id=28
    AdditionalAgreement getAdditionalAgreement​(int id)
    Вернет допик по его ид
    Component getComponent​(int id)  
    Component getComponent​(java.lang.String name)  
    java.util.List<Component> getComponentList()
    Получает список всех компонентов.
    java.util.List<Component> getComponentList​(int copyId, boolean showHidden, java.lang.Boolean availableOnWeb)
    Получает список всех компонентов для заданной копии продукта.
    java.util.List<Component> getComponentsForProduct​(int productId)  
    java.util.List<Contract> getContractByTitlePart​(java.lang.String titlePart)
    Возвращает договоры, номера которых начинаются с заданной подстроки.
    java.lang.String getContractComment​(int contractId)  
    Copy getCopy​(int copyId)  
    java.util.Map<java.lang.Integer,​int[]> getCopyCountForComponentByProductMap​(int productId)
    находим в скольких копиях продукта встречается компонент select component_id, count(copy_id) from lic_order_16 where type=0 and status=2 and copy_id in (select id from lic_copy_16 where product_id=3) group by component_id unlimited select component_id, count(copy_id) from lic_order_16 where type=1 and status=2 and count=0 and copy_id in (select id from lic_copy_16 where product_id=3) group by component_id SELECT component_id, SUM(count) FROM lic_order_16 WHERE type=1 AND status=2 AND count=0 AND copy_id IN ( SELECT id FROM lic_copy_16 WHERE product_id=3 ) AND concat(copy_id,' ',component_id) NOT IN ( SELECT concat(copy_id,' ',component_id) FROM lic_order_16 WHERE count=0 AND type=1 AND status=2 ) GROUP BY component_id
    int[] getCopyItemIds​(int copyId)  
    java.util.List<ConfirmedOrder> getCopyItems​(int copyId, int filter)
    Получает список экземпляров компонентов для указанной копии продукта.
    java.util.List<ConfirmedOrder> getCopyItemsFromPackage​(int packageId)  
    java.util.List<Copy> getCopyList​(int contractId)
    Получает список копий продукта для заданного договора.
    License getCurrentLicense​(int copyId)
    Получает текущую лицензию для заданной копии.
    java.math.BigDecimal getDiscount​(int contractId, int copyId)
    Вернет скидку(ну или ту сумму которую они уже оплатили и которую необходимо учитовать).
    int getLastNumber​(int contractId)
    Вернет максимальный номер допика для соответсвующего контракта.
    License getLicenseById​(int licenseId)
    Получает текущую лицензию для заданной копии.
    java.util.List<ConfirmedOrder> getLicenseItems​(int licenseId, boolean testDateForNow)  
    java.util.List<License> getLicenses​(int copyId)
    Получает список лицензий для заданной копии продукта
    java.lang.String getLicenseText​(int packageId)  
    java.util.List<AdditionalAgreement> getListAdditionalAgreement​(int contractId, int copyId)  
    Order getOrder​(int orderId)  
    int getOrderIdFromConfirmedId​(int condirmedOrderId)
    возращает код заказа для потвержденного заказа
    java.util.List<Order> getOrders​(int copyId)  
    java.util.List<Order> getOrders​(int copyId, java.lang.String filterPermanentStatus, java.lang.String filterTestStatus, int filterComponentItemId)
    Если все 3 фильтра незначимые (filterPermanentStatus=null ,filterTestStatus=null ,filterComponentItemId=-1 ), то выведит все заказы.
    java.util.List<Order> getOrders​(int copyId, OrderType filterType, int filterStatus, int filterComponentItemId)  
    int getOrdersCountOnComponent​(int componentId)  
    int getOrdersCountOnProduct​(int productId)  
    int getOrderStatus​(int id)  
    int getOrderType​(int id)  
    java.lang.String getOrganizationTitle​(int contractId, int fullOrganizationNameParamId)
    Получает наименование организации.
    java.lang.String getOriginalLicenseText​(int packageId)  
    Product getProduct​(int pid)  
    java.util.List<Product> getProducts()  
    java.util.List<Product> getProductsWithComponent​(int componentId)  
    java.util.List<SpecificationTitle> getSpecificationOfAdditionalAgreement​(int id)
    Вернет список всех компонентов соответсвующего допика.
    ConfirmedOrder groupCopyItems​(int productItemId, int copyId, int[] orderStatuses)
    Получает информацию заказанных компонентах ( id компонента, название компонента, количество) по заданному id компонента, группируя все заказы на данный компонент
    protected int lastInsertId​(java.sql.PreparedStatement ps)  
    void linkComponentToProduct​(int productId, int componentId)  
    void resetCopyDiscount​(int contractId, int productCopyId)  
    void setAdditionalAgreement​(AdditionalAgreement title, int contractId)
    Сохранит доп. соглашение в базе
    void setCharge​(int id, int chargeId)
    Установит ид расхода у допика.
    void setDiscount​(java.math.BigDecimal discount, int contractId, int copyId)
    Установим скидку для конткретного договора и продукта.
    void setInvoice​(int id, int invoiceId)  
    void setStatusSigned​(int id)
    Установит статус "Подписано"
    void unlinkComponentFromProduct​(int productId, int componentId)  
    void updateComponent​(Component component)  
    void updateCopy​(Copy copy)  
    void updateCopyItem​(ConfirmedOrder copyItem)
    Создает записи о компонентах, входящих в состав заданной копии продукта.
    void updateCopyItemOrder​(Order order)
    Создает или обновляет заказ
    void updateCopyItemOrder​(Order order, boolean updateConfirmed)
    Создает или обновляет заказ
    void updateCopyItemOrder​(Order order, java.util.Date copyItemToDate)  
    void updateLicenseData​(License lic)  
    void updateProduct​(Product product)
    Создает или обновляет запись о продукте.
    void updateTestComponentDateTo​(int orderId, java.util.Date dateTo)
    Обновляет дату окончания действия лицензии на тестовый компонент.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • LicenseManager

      public LicenseManager​(java.sql.Connection con, int moduleId)
  • Method Details

    • updateProduct

      public void updateProduct​(Product product)
      Создает или обновляет запись о продукте.
    • deleteProduct

      public void deleteProduct​(int pid)
    • getProduct

      public Product getProduct​(int pid)
    • getOrdersCountOnProduct

      public int getOrdersCountOnProduct​(int productId)
    • getProductsWithComponent

      public java.util.List<Product> getProductsWithComponent​(int componentId) throws ru.bitel.bgbilling.common.BGException
      Throws:
      ru.bitel.bgbilling.common.BGException
    • updateComponent

      public void updateComponent​(Component component)
    • deleteComponent

      public void deleteComponent​(int id)
    • deleteComponents

      public void deleteComponents​(int productId)
    • getComponent

      public Component getComponent​(int id)
    • getComponent

      public Component getComponent​(java.lang.String name)
    • getComponentList

      public java.util.List<Component> getComponentList()
      Получает список всех компонентов.
    • getComponentList

      public java.util.List<Component> getComponentList​(int copyId, boolean showHidden, java.lang.Boolean availableOnWeb)
      Получает список всех компонентов для заданной копии продукта.
      Parameters:
      copyId - - код копии
      showHidden - - если true, то в список будут включены компоненты, отмеченные как 'скрытые'
      Returns:
    • getOrdersCountOnComponent

      public int getOrdersCountOnComponent​(int componentId)
    • getComponentsForProduct

      public java.util.List<Component> getComponentsForProduct​(int productId)
    • linkComponentToProduct

      public void linkComponentToProduct​(int productId, int componentId)
    • unlinkComponentFromProduct

      public void unlinkComponentFromProduct​(int productId, int componentId)
    • updateCopy

      public void updateCopy​(Copy copy)
    • getCopy

      public Copy getCopy​(int copyId)
    • updateCopyItem

      public void updateCopyItem​(ConfirmedOrder copyItem)
      Создает записи о компонентах, входящих в состав заданной копии продукта.
    • updateCopyItemOrder

      public void updateCopyItemOrder​(Order order) throws ru.bitel.bgbilling.common.BGMessageException
      Создает или обновляет заказ
      Throws:
      ru.bitel.bgbilling.common.BGMessageException - - если кол-во общих заказов привысит unlim
    • updateCopyItemOrder

      public void updateCopyItemOrder​(Order order, boolean updateConfirmed) throws ru.bitel.bgbilling.common.BGMessageException
      Создает или обновляет заказ
      Throws:
      ru.bitel.bgbilling.common.BGMessageException - - если кол-во общих заказов привысит unlim
    • updateCopyItemOrder

      public void updateCopyItemOrder​(Order order, java.util.Date copyItemToDate) throws ru.bitel.bgbilling.common.BGMessageException
      Throws:
      ru.bitel.bgbilling.common.BGMessageException
    • getOrderStatus

      public int getOrderStatus​(int id)
    • getOrderType

      public int getOrderType​(int id)
    • getOrders

      public java.util.List<Order> getOrders​(int copyId, OrderType filterType, int filterStatus, int filterComponentItemId)
    • getOrders

      public java.util.List<Order> getOrders​(int copyId, java.lang.String filterPermanentStatus, java.lang.String filterTestStatus, int filterComponentItemId)
      Если все 3 фильтра незначимые (filterPermanentStatus=null ,filterTestStatus=null ,filterComponentItemId=-1 ), то выведит все заказы.
      Parameters:
      copyId -
      filterPermanentStatus - - фильтр для "постоянных" заказов в виде 0,1,2 или 2,1 или 0 , где в скобках соответсвующий id (0-новый , 1-отказано, 2 -выполнен). Если передать null или пустую строку, фильтр не будет выводить "постоянные" заказы.
      filterTestStatus - - фильтр для "тестовых" заказов в виде 0,1,3 или 3,1 или 0 , где в скобках соответсвующий id (0-новый , 1-отказано, 3 -подтвержден). Если передать null или пустую строку, фильтр не будет выводить "тестовые" заказы.
      filterComponentItemId - - id компонента, фильтр по компоненту ну там id email или id ipn или id npay ну и т.д. или -1 если фильтр по нему не нужен.
      Returns:
      - отфильтрованный лист заказов
    • getOrders

      public java.util.List<Order> getOrders​(int copyId)
    • getOrder

      public Order getOrder​(int orderId)
    • createTestCopiesForOrder

      public void createTestCopiesForOrder​(Order order, int term, int count) throws ru.bitel.bgbilling.common.BGMessageException
      Throws:
      ru.bitel.bgbilling.common.BGMessageException
    • deleteOrder

      public void deleteOrder​(int orderId)
    • checkCopyItemStatus

      public boolean checkCopyItemStatus​(int copyItemId)
      Проверяет, является ли статус для заказа данного компонента "выполнен" (если куплен) или "подтвержден" (если тестовый)
      Parameters:
      copyItemId -
      Returns:
    • checkHaveNonSignAdditionalAgreement

      public boolean checkHaveNonSignAdditionalAgreement​(int copyId) throws ru.bitel.bgbilling.common.BGException
      Проверка, есть ли не подписанный допик.
      Parameters:
      copyId - - ид копии продукта.
      Returns:
      - true, если есть не подписанный.
      Throws:
      ru.bitel.bgbilling.common.BGException
    • createLicense

      public int createLicense​(License lic)
    • updateLicenseData

      public void updateLicenseData​(License lic)
    • groupCopyItems

      public ConfirmedOrder groupCopyItems​(int productItemId, int copyId, int[] orderStatuses)
      Получает информацию заказанных компонентах ( id компонента, название компонента, количество) по заданному id компонента, группируя все заказы на данный компонент
      Parameters:
      productItemId -
      Returns:
      Throws:
      java.sql.SQLException
    • getLicenses

      public java.util.List<License> getLicenses​(int copyId)
      Получает список лицензий для заданной копии продукта
      Parameters:
      copyId - - id копии продукта
      Returns:
      - список пакетов
    • getCurrentLicense

      public License getCurrentLicense​(int copyId)
      Получает текущую лицензию для заданной копии. Текущей лицензией является последняя сгенерированная пользователем лицензия, то есть при наличии нескольких лицензий выбирается та, у которой дата создания самая поздняя.
      Parameters:
      copyId - - id копии продукта.
      Returns:
      - текущая лицензия
    • getLicenseById

      public License getLicenseById​(int licenseId)
      Получает текущую лицензию для заданной копии. Текущей лицензией является последняя сгенерированная пользователем лицензия, то есть при наличии нескольких лицензий выбирается та, у которой дата создания самая поздняя.
      Parameters:
      copyId - - id копии продукта.
      Returns:
      - текущая лицензия
    • getLicenseItems

      public java.util.List<ConfirmedOrder> getLicenseItems​(int licenseId, boolean testDateForNow)
      Parameters:
      licenseId -
      testDate - - если true, то не будут выведены тестовые дата завершения которых меньше текущей даты.
      Returns:
    • getCopyList

      public java.util.List<Copy> getCopyList​(int contractId)
      Получает список копий продукта для заданного договора.
      Parameters:
      contractId - - id договора
      Returns:
      - список копий
    • getCopyItems

      public java.util.List<ConfirmedOrder> getCopyItems​(int copyId, int filter) throws ru.bitel.bgbilling.common.BGException
      Получает список экземпляров компонентов для указанной копии продукта.
      Parameters:
      copyId - - id копии продукта
      filter - - если 0, то в список попадают только компоненты с наибольшим количеством если 1 - только купленные компоненты если 2 - все компоненты
      Returns:
      - список экземпляров модулей
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getCopyItemIds

      public int[] getCopyItemIds​(int copyId) throws ru.bitel.bgbilling.common.BGException
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getProducts

      public java.util.List<Product> getProducts() throws ru.bitel.bgbilling.common.BGException
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getContractByTitlePart

      public java.util.List<Contract> getContractByTitlePart​(java.lang.String titlePart) throws ru.bitel.bgbilling.common.BGException
      Возвращает договоры, номера которых начинаются с заданной подстроки. Позволяет искать договор по номеру без указания года.
      Parameters:
      title - номер договора
      Returns:
      Throws:
      ru.bitel.bgbilling.common.BGException
    • updateTestComponentDateTo

      public void updateTestComponentDateTo​(int orderId, java.util.Date dateTo)
      Обновляет дату окончания действия лицензии на тестовый компонент. Обновляются только те компоненты, для которых новая дата позже текущей даты окончания лицензии.
      Parameters:
      orderId - - код заказа, для которого продливается тестовая лицензия.
      dateTo - - новая дата окончания действия лицензии.
    • getCopyItemsFromPackage

      public java.util.List<ConfirmedOrder> getCopyItemsFromPackage​(int packageId)
    • getOrganizationTitle

      public java.lang.String getOrganizationTitle​(int contractId, int fullOrganizationNameParamId)
      Получает наименование организации.
      Parameters:
      contractId - - id договора
      fullOrganizationNameParamId - - id параметра, содержащего полное наименование организации
      Returns:
      наименование организации
    • getContractComment

      public java.lang.String getContractComment​(int contractId)
    • getLicenseText

      public java.lang.String getLicenseText​(int packageId)
    • getOriginalLicenseText

      public java.lang.String getOriginalLicenseText​(int packageId)
    • lastInsertId

      protected int lastInsertId​(java.sql.PreparedStatement ps) throws java.sql.SQLException
      Throws:
      java.sql.SQLException
    • closeConnection

      protected void closeConnection​(java.sql.Connection con)
    • getListAdditionalAgreement

      public java.util.List<AdditionalAgreement> getListAdditionalAgreement​(int contractId, int copyId) throws ru.bitel.bgbilling.common.BGException
      Parameters:
      cid - - id договора
      Returns:
      Список всех доп.соглошений для соответсвующего договора.
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getAdditionalAgreement

      public AdditionalAgreement getAdditionalAgreement​(int id) throws ru.bitel.bgbilling.common.BGException
      Вернет допик по его ид
      Parameters:
      id -
      Returns:
      допик
      Throws:
      ru.bitel.bgbilling.common.BGException
    • setAdditionalAgreement

      public void setAdditionalAgreement​(AdditionalAgreement title, int contractId) throws ru.bitel.bgbilling.common.BGException
      Сохранит доп. соглашение в базе
      Parameters:
      title - - доп. соглашение которое было создано
      contractId - - номер договора к которому приписываем д.с.
      Throws:
      ru.bitel.bgbilling.common.BGException
    • deleteAdditionalAgreement

      public void deleteAdditionalAgreement​(int idAdditionalAgreement) throws ru.bitel.bgbilling.common.BGException
      Удалит доп. соглашение из базе
      Parameters:
      idAdditionalAgreement - - ид. удаляемого допика
      Throws:
      ru.bitel.bgbilling.common.BGException
    • resetCopyDiscount

      public void resetCopyDiscount​(int contractId, int productCopyId) throws ru.bitel.bgbilling.common.BGException
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getSpecificationOfAdditionalAgreement

      public java.util.List<SpecificationTitle> getSpecificationOfAdditionalAgreement​(int id) throws ru.bitel.bgbilling.common.BGException
      Вернет список всех компонентов соответсвующего допика.
      Parameters:
      id - ид допика, у которого будет взят SpecificationTitle
      Returns:
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getLastNumber

      public int getLastNumber​(int contractId) throws ru.bitel.bgbilling.common.BGException
      Вернет максимальный номер допика для соответсвующего контракта. Если номера еще нет то вернет -1
      Parameters:
      contractId -
      Returns:
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getDiscount

      public java.math.BigDecimal getDiscount​(int contractId, int copyId) throws ru.bitel.bgbilling.common.BGException
      Вернет скидку(ну или ту сумму которую они уже оплатили и которую необходимо учитовать). Она необхадима для вывода суммы при создание первого доп.согл. и для информирования в дальнейшем.
      Parameters:
      contractId -
      copyId -
      Throws:
      ru.bitel.bgbilling.common.BGException
    • setDiscount

      public void setDiscount​(java.math.BigDecimal discount, int contractId, int copyId) throws ru.bitel.bgbilling.common.BGException
      Установим скидку для конткретного договора и продукта.
      Parameters:
      discount - - скидка
      contractId - - номер договоро
      copyId - - код копии продукта
      Throws:
      ru.bitel.bgbilling.common.BGException
    • setStatusSigned

      public void setStatusSigned​(int id) throws ru.bitel.bgbilling.common.BGException
      Установит статус "Подписано"
      Parameters:
      id - - ид доп. соглошения
      Throws:
      ru.bitel.bgbilling.common.BGException
    • setCharge

      public void setCharge​(int id, int chargeId) throws ru.bitel.bgbilling.common.BGException
      Установит ид расхода у допика.
      Parameters:
      id - - ид допика.
      chargeId - - ид расхода.
      Throws:
      ru.bitel.bgbilling.common.BGException
    • setInvoice

      public void setInvoice​(int id, int invoiceId) throws ru.bitel.bgbilling.common.BGException
      Throws:
      ru.bitel.bgbilling.common.BGException
    • getOrderIdFromConfirmedId

      public int getOrderIdFromConfirmedId​(int condirmedOrderId)
      возращает код заказа для потвержденного заказа
    • getCopyCountForComponentByProductMap

      public java.util.Map<java.lang.Integer,​int[]> getCopyCountForComponentByProductMap​(int productId)
      находим в скольких копиях продукта встречается компонент select component_id, count(copy_id) from lic_order_16 where type=0 and status=2 and copy_id in (select id from lic_copy_16 where product_id=3) group by component_id unlimited select component_id, count(copy_id) from lic_order_16 where type=1 and status=2 and count=0 and copy_id in (select id from lic_copy_16 where product_id=3) group by component_id SELECT component_id, SUM(count) FROM lic_order_16 WHERE type=1 AND status=2 AND count=0 AND copy_id IN ( SELECT id FROM lic_copy_16 WHERE product_id=3 ) AND concat(copy_id,' ',component_id) NOT IN ( SELECT concat(copy_id,' ',component_id) FROM lic_order_16 WHERE count=0 AND type=1 AND status=2 ) GROUP BY component_id
    • doContractData

      public java.util.List<ContractData> doContractData​(int productId, int componentId)
      select distinct c.id, title, c.comment from lic_order_154 as a left join lic_copy_154 as b on a.copy_id=b.id and product_id=20 left join contract as c on c.id=contract_id where component_id=28
      Parameters:
      productId -
      componentId -
      Returns: