03-12-2018 23:59

Поиск по депозитным контрактам

POST   /bs-core/main/deposit-contracts/partial-load

Метод предназначен для поиска по депозитным контрактам с возможностью задавать набор полей в ответе и порядок сортировки элементов.

Запрос

/bs-core/main/deposit-contracts/partial-load

{
    "fields": [
        "id",
        "client.id",
        "client.creationDate",
        "client.additionalInfo.riskStatusType.id",
        "name",
        "creationDate",
        "closeDate",
        "closedStatus.id",
        "branch.id",
        "subdivision.id",
        "loanAmount",
        "creditProductName",
        "creditProduct.id",
        "loanApplication.id",
        "loanApplication.gettingMoneyMethod.id",
        "loanApplication.name",
        "creditField.id",
        "client.naturalperson",
        "client.sex.id",
        "client.lastName",
        "client.firstName",
        "client.patronymic",
        "client.title",
        "issueDate",
        "forIssue",
        "creditContract.id"
    ],
    "orderBy": "id",
    "orderDirection": "DESC",
    "orderByFields": [
     { "field": "creationDate" },
     { "field": "id", "direction": "desc" }
    ],
    "searchFields": [
        {
            "field": "creationDate",
            "value": ">=2018-05-20 00:00:00"
        }
    ],
    "countFrom": 0,
    "countTo": 10
}
Описание параметров
Параметр Обязателен Тип данных Описание
fields М [collection] Коллекция полей, которые должны вернуться в результатах поиска.
fields.{fieldName} М [string][255]

В качестве элементов списка могут быть указаны любые поля из  Депозитного контракта, которые не являются внешними ключами.

Например: "name", "CreationDate" и так далее. 

Признаком внешнего ключа является указание в описании параметра на метод, который позволяет по ID (по значению параметра - получить объект). Пример: clientId.

Для полей, которые являются внешними ключами - возможно получение любых полей объекта, ID котрого указано в поле. Например: в объекте депозитный контракт есть поле clientId, которое является внешним ключом. Это значит, что мы можем запросить любое поле объекта клиент: client.id, client.lastName и так далее. Также возможны варианты, при которых мы можем запросить поля из более глубоких сущностей, при наличии внешних ключей в объекте. 

Например: client.passport.seria - позволяет получить серию паспорта клиента, от которого оформлен депозитный контракт.

orderBy М [string][255 ] Название поля, по которому надо делать сортировку. С релиза 2.0.0-65 для сортировки следует использовать коллецию orderByFields. ​
orderDirection М [enum ]

Направление сортировки результатов поиска

  • DESC - по убыванию
  • ASC - по позрастанию

С релиза 2.0.0-65 для направления сортировки следует передавать направление в коллекции orderByFields.

orderByFields М [collection]

Массив полей, по которым происходит сортировка.

"orderByFields": [
     { "field": "creationDate" },
     { "field": "manualStatusId", "direction": "desc" }
    ]

В этом примере сортировка происходит по полям creationDate и manualStatusId. Также результат сортируется по убыванию. Для направления сортировки используется параметр manualStatusId. Если поле direction не указан, то сортировка по полю выполняется по возрастанию. Если в запросе на ядро переданы оба способа сортировки, то старый способ задания сортировки игнорируется. Эти изменения действуют с релиза 2.0.0-65. Смотрите также описание параметров orderBy и orderDirection.

searchFields М [string]

Условия поиска (фильтрации) депозитных контрактов, наличие параметра searchFields является обязательным, однако это может быть пустая коллекция (условия поиска могут быть не заданы). Строго рекомендуется задавать параметры фильтрации. 

searchFields._.field М [string][255 ]

Название поля, по которому нужно сделать фильтрацию. Правила формирования этого поля следующие: 

В качестве элементов списка могут быть указаны любые поля из сущности Депозитный контракт, которые не являются внешними ключами.

Например: "name", "CreationDate" и так далее. 

Признаком внешнего ключа является указание в описание параметра на метод, который позволяет по ID (по значению параметра - получить объект). Пример: clientId.

Для полей, которые являются внешними ключами - возможно получение любых полей объекта, ID котрого указано в поле. Например: в объекте "Паевой контракт"  есть поле clientId, котрое является внешним ключом. Это значит, что мы можем запросить любое поле объекта клиент: client.id, client.lastName и так далее. Также возможны варианты, при которых мы можем запросить поля из более глубоких сущностей, при наличии внешних ключей в объекте. 

Например: client.passport.seria - позволяет получить серию паспорта клиента, от которого оформлен депозитный контракт.

searchFields._.value М [string][255]

Значение для фильтрации.

В значении параметра может указывается как точное значение, так и нет. Для значений не полного соответствия используются различные параметры.

Для указания значений этого параметра можно использовать следующие операторы: %, like, !=, null, not null, >, <, >=, <=.

Для передачи даты используется следующий формат YYYY-MM-DD (действует с 2.0.0-65 релиза) например 2018-05-25, а для передачи даты и времени YYYY-MM-DD hh:mm:ss (например 2018-05-25 12:22:35).

Пример условия строгого соответствия: 

      {
           "field": "client.id",
           "value": "123"
       },

Так и условия нестрогого соответствия, например: 

      {
           "field": "creationDate",
           "value": ">=2017-09-01 00:00:00"
       },

      {
           "field": "creationDate",
           "value": "<=2017-09-01 00:00:00"
       }

Так же в поле "field" можно передать тип контракта ( по умолчанию поиск по всем типам контракта) :

 Кредитный - 101911;

 Депозитный - 101912;

Паевой - 101913.

Например:

  {  "field": "contractType.id",   "value": 101911  }  

Поле businessStatus из списка динамических параметров в списке поля для вывода и в списке полей для поиска может принимать значение null.
При этом в поиске можно использовать поиск по null, но нельзя использовать like, >, <.
То есть или строгое соответствие или null.

Например:
        {
            "field": "businessStatus",
            "value": "AUTO_CHECK"
        }

searchFields._.ornumber М [string][255]

Значение для группировки параметров поиска (фильтрации) в условии OR.
Поле не обязательное и используется в случаях когда нужно искать как условия по И, так и условия по ИЛИ.
Например, нужно найти все записи у которых в поле1 указано значение XXXX, при этом в поле2 указано YYYY или ZZZZ.
В этом случае можно использовать поле ornumber. Значение может быть числом или символом, но уникальным в рамках одной группы условий ИЛИ. Зарезервированным значением является  -1

Пример 1

      {
           "field": "contract.id",
           "value": "10134756"
       },

      {
           "field": "loanAmount",
           "value": "10000",
           "ornumber": "
1",
       },

     {
           "field": "name",
           "value": "5%",
           "ornumber": "
1",
       },
 В этом примере будут искаться все записи, у которых в поле contract.id указано 10134756 и при этом одновременно выполняется одно из условий поле loanAmount равно 10000 или поле name начинается с 5%.
То есть, в выражении языка SQL : contract.id = 10134756 AND (loanAmount = 10000 OR name like "5%")

Пример 2

      {
           "field": "name",
           "value": "1%",
           "ornumber": "
1",
       },

     {
           "field": "name",
           "value": "5%",
           "ornumber": "
1",
       },

    {
           "field": "loanAmount",
           "value": "10000",
           "ornumber": "
2",
       },

     {
           "field": "loanAmount",
           "value": "20000",
           "ornumber": "
2",
       },

 В  выражении языка SQL : (name like "1%" OR name like "5%) AND (loanAmount = 10000 OR loanAmount = 20000)

countFrom М [int] Смещение от начала поиска, т.е. если хотим получить с 10-ой записи, то передаем 10.
countTo М [int ] Лимит (сколько записей будет возвращено)

Ответ


                        {
    "status": "ok",
    "timestamp": 1528117584866,
    "data": [
        {
            "id": 101342034,
            "fields": {
                "id": 101342034,
                "client.id": 101322875,
                "client.creationDate": "2018-06-04",
                "client.additionalInfo.riskStatusType.id": null,
                "name": "Д-1350",
                "creationDate": "2018-06-04",
                "closeDate": null,
                "closedStatus.id": null,
                "branch.id": 101305,
                "subdivision.id": 101796,
                "loanAmount": 141000,
                "creditProductName": "",
                "creditProduct.id": null,
                "loanApplication.id": null,
                "loanApplication.gettingMoneyMethod.id": null,
                "loanApplication.name": null,
                "creditField.id": null,
                "client.naturalperson": true,
                "client.sex.id": 101252,
                "client.lastName": "Иван",
                "client.firstName": "Сергей",
                "client.patronymic": "Ира",
                "client.title": "",
                "issueDate": null,
                "forIssue": true,
                "creditContract.id": null
            }
        },
        {
            "id": 101342032,
            "fields": {
                "id": 101342032,
                "client.id": 101322875,
                "client.creationDate": "2018-06-04",
                "client.additionalInfo.riskStatusType.id": null,
                "name": "Д-1349",
                "creationDate": "2018-06-04",
                "closeDate": null,
                "closedStatus.id": null,
                "branch.id": 101305,
                "subdivision.id": 101796,
                "loanAmount": 141000,
                "creditProductName": "",
                "creditProduct.id": null,
                "loanApplication.id": null,
                "loanApplication.gettingMoneyMethod.id": null,
                "loanApplication.name": null,
                "creditField.id": null,
                "client.naturalperson": true,
                "client.sex.id": 101252,
                "client.lastName": "Иван",
                "client.firstName": "Сергей",
                "client.patronymic": "Ира",
                "client.title": "",
                "issueDate": 1528059600000,
                "forIssue": true,
                "creditContract.id": null
            }
        },
        {
            "id": 101342029,
            "fields": {
                "id": 101342029,
                "client.id": 101322875,
                "client.creationDate": "2018-06-04",
                "client.additionalInfo.riskStatusType.id": null,
                "name": "Д-1348",
                "creationDate": "2018-06-04",
                "closeDate": null,
                "closedStatus.id": null,
                "branch.id": 101305,
                "subdivision.id": 101796,
                "loanAmount": 14100,
                "creditProductName": "",
                "creditProduct.id": null,
                "loanApplication.id": null,
                "loanApplication.gettingMoneyMethod.id": null,
                "loanApplication.name": null,
                "creditField.id": null,
                "client.naturalperson": true,
                "client.sex.id": 101252,
                "client.lastName": "Иван",
                "client.firstName": "Сергей",
                "client.patronymic": "Ира",
                "client.title": "",
                "issueDate": null,
                "forIssue": true,
                "creditContract.id": null
            }
        },
        {
            "id": 101342027,
            "fields": {
                "id": 101342027,
                "client.id": 101322875,
                "client.creationDate": "2018-06-04",
                "client.additionalInfo.riskStatusType.id": null,
                "name": "Д-1347",
                "creationDate": "2018-06-04",
                "closeDate": null,
                "closedStatus.id": null,
                "branch.id": 101305,
                "subdivision.id": 101796,
                "loanAmount": 141000,
                "creditProductName": "",
                "creditProduct.id": null,
                "loanApplication.id": null,
                "loanApplication.gettingMoneyMethod.id": null,
                "loanApplication.name": null,
                "creditField.id": null,
                "client.naturalperson": true,
                "client.sex.id": 101252,
                "client.lastName": "Иван",
                "client.firstName": "Сергей",
                "client.patronymic": "Ира",
                "client.title": "",
                "issueDate": null,
                "forIssue": true,
                "creditContract.id": null
            }
        }
    ]
}
                    
Описание параметров
Параметр Обязателен Тип данных Описание
id М [int] Идентификатор депозитного контракта, который соотвествует заданным параметрам фильтрации
fields М [collection] Коллекция полей, которые вернулись в ответ на запрос
fields.{field} М [mixed] Набор полей в ответе зависит от того, какие поля были переданы в коллекцию searchFields. Типы данных и значения следует смотреть в описании соответствующих сущностей.