Задача [0414]: API получения должностей с карточками

Формулировка проблемы:

  1. Создаются следующие должности:

    • Водитель, в карточке должности указывается категория - 2

    • Водитель, в карточке должности указывается категория - 3

  2. Создается приказ по форме с компонентом объект Synergy "Должность".

  3. В окне выбора должности отображаются следующим образом:

    • Водитель

    • Водитель

  4. Нет возможности выбрать водителя необходимого в соответствии с его категорией.

Требуется возможность отображать в объекте Synergy (Тип данных - Должность) рядом с названием должности дополнительные поля из карточек должностей.

Решение: необходимо реализовать API метод, который позволит получить должности вместе с информацией, находящейся в карточке должностей.

URL метода: /rest/api/positions/getPositionsWithCards

Тип метода: GET.

Метод принимает следующие входные параметры:

При указании одновременно разных параметров результат запроса будет связан логическим И. Пример запроса:
/rest/api/positions/getPositionsWithCards?departmentID=a060a200-dc75-11e5-9336-1e88d1bc0767
&positionFormID=305fa7a9-6497-4cdf-a14a-6fb344199538&cmpID=status

При указании одновременно нескольких наборов параметров необходимо дополнительно передать параметры поиска, прибавив к названиям параметров порядковый номер набора параметров. Количество наборов параметров, которые можно добавить неограничено. Главное соблюдать правильную нумерацию названий параметров: 1, 2, 3 и т.д. Первый набор не имеет порядкового номера. Таким образом, метод получит дополнительный набор параметров positionFormID1, cmpID1, positionFormID2, cmpID2 и т.д.

В случае успешного выполнения метод возвращает JSON в виде объектов с ключами по positionFormID и cmpID:

Пример запроса:
/rest/api/positions/getPositionsWithCards?departmentID=4df92af0-da1d-11e5-9c63-1e88d1bc0767
&positionFormID=373c3270-cf0b-11e5-a154-1e88d1bc0767&cmpID=category&cmpID=rang
&positionFormID1=23727710-cf22-11e5-a154-1e88d1bc0767&cmpID1=group &positionFormID2=13727710-cf22-11e5-a154-1e88d1bc0767&cmpID2=text&cmpID2=date

Пример возвращаемого массива:


[
  { "positionID": "81ac53f0-c351-11e5-ab17-1e88d1bc0767",
    "positionName": "Водитель",
    "positionType": "256",
    "forms":[  
      {  
         "formUUID":"373c3270-cf0b-11e5-a154-1e88d1bc0767",
         "asfDataUUID":"41fd8240-b822-11e5-8630-525400bb7fc6",
         "values":[  
            { "category":"2" },
            { "rang":"5" } ]
      },
      {
        "formUUID":"23727710-cf22-11e5-a154-1e88d1bc0767",
        "asfDataUUID":"182eeca0-d98e-11e5-8c91-525400bb7fc6",
        "values":[
            { "group":"основная" } ]  
      },
      {
        "formUUID":"13727710-cf22-11e5-a154-1e88d1bc0767",
        "asfDataUUID":"45dg8240-b822-11e5-8630-525400bb7fc6",
        "values":[  
            { "text":"Добавить в штатное расписание" },
            { "date":"2016-05-02" } ]
      }
    ]
  },
  { "positionID": "693616c0-d49b-11e5-a5fb-1e88d1bc0767",
    "positionName": "Водитель",
    "positionType": "2",
    "forms":[  
      {  
         "formUUID":"373c3270-cf0b-11e5-a154-1e88d1bc0767",
         "asfDataUUID":"c952f930-cfd5-11e5-bae8-525400bb7fc6",
         "values":[  
            { "category":"3" },
            { "rang":"7" } ]
      },
      {
        "formUUID":"23727710-cf22-11e5-a154-1e88d1bc0767",
        "asfDataUUID":"1d8b0c40-91dd-11e5-9fa7-525400bb7fc6",
        "values":[
            { "group":"вспомогательная" } ]  
      },
      {
        "formUUID":"13727710-cf22-11e5-a154-1e88d1bc0767",
        "asfDataUUID":"26lg8240-25jz-11e5-8630-525400bb7fc6",
        "values":[  
            { "text":"Есть в штатном расписании" },
            { "date":"2015-06-02" } ]
      }
    ]
  },          
  { "positionID": "ccee5340-c991-11e5-afba-1e88d1bc0767",
    "positionName": "Водитель",
    "positionType": "2",
    "forms":[  
      {  
         "formUUID":"373c3270-cf0b-11e5-a154-1e88d1bc0767",
         "asfDataUUID":"822ac240-b428-11e5-8630-525400bb7fc6",
         "values":[  
            { "category":"2" },
            { "rang":"6" } ]
      },
      {
        "formUUID":"23727710-cf22-11e5-a154-1e88d1bc0767",
        "asfDataUUID":"39877130-9f17-11e5-9ae6-525400bb7fc6",
        "values":[
            { "group":"обслуживающая" } ]  
      },
      {
        "formUUID":"13727710-cf22-11e5-a154-1e88d1bc0767",
        "asfDataUUID":"d66dd140-b822-11e5-8630-525400bb7fc6",
        "values":[  
            { "text":"Добавить в штатное расписание" },
            { "date":"2016-02-15" } ]
      }
    ]
  }     
]

Альтернативные потоки событий:

Альтернативный поток №1. Передан некорректный параметр cmpIsNeeded. Сервер возвращает ошибку HTTP 400 с сообщением:

{
    "errorCode": 13,
    "errorMessage":
    "Передан некорректный параметр cmpIsNeeded"
}

действие не выполняется.

Альтернативный поток №2. Параметру cmpIsNeeded присвоено значение true, не переданы параметры positionFormID, cmpID. Сервер возвращает ошибку HTTP 400 с сообщением:

{
    "errorCode": 13,
    "errorMessage":
    "Не переданы параметры positionFormID, cmpID"
}

действие не выполняется.

Альтернативный поток №3. Параметру cmpIsNeeded присвоено значение true, не передан параметр cmpID. Сервер возвращает ошибку HTTP 400 с сообщением:

{
    "errorCode": 13,
    "errorMessage":
    "Не передан параметр cmpID"
}

действие не выполняется.

Альтернативный поток №4. Параметру cmpIsNeeded присвоено значение true, не передан параметр positionFormID. Сервер возвращает ошибку HTTP 400 с сообщением:

{
    "errorCode": 13,
    "errorMessage":
    "Не передан параметр positionFormID"
}

действие не выполняется.

Альтернативный поток №5. Значение переданного параметра recordsCount превышает максимальное значение. Сервер возвращает ошибку HTTP 400 с сообщением:

{
    "errorCode":13,
    "errorMessage":"Значение параметра recordsCount превышает максимальное
    значение равное 50. Для просмотра дальнейших результатов воспользуйтесь
    параметром startRecord"
}

действие не выполняется.

Альтернативный поток №6. Не передан параметр departmentID. Сервер возвращает ошибку HTTP 400 с сообщением:

{
    "errorCode": 13,
    "errorMessage":
    "Не передан параметр departmentID"
}

действие не выполняется.

Альтернативный поток №7. Передан некорректный параметр recursive. Сервер возвращает ошибку HTTP 400 с сообщением:

{
    "errorCode": 13,
    "errorMessage":
    "Передан некорректный параметр recursive"
}

действие не выполняется.

Альтернативный поток №8. Параметру cmpIsNeeded присвоено значение true, передан некорректный параметр positionFormID. Сервер возвращает ошибку HTTP 400 с сообщением:

{
    "errorCode": 13,
    "errorMessage":
    "Передан некорректный параметр positionFormID"
}

действие не выполняется.

Альтернативный поток №9. Параметру cmpIsNeeded присвоено значение true, передан некорректный параметр cmpID. Сервер возвращает ошибку HTTP 400 с сообщением:

{
    "errorCode": 13,
    "errorMessage":
    "Передан некорректный параметр cmpID"
}

действие не выполняется.

Альтернативный поток №10. На стороне сервера произошла ошибка. Сервер возвращает ошибку HTTP 500 с сообщением:

{   
    "errorCode": 13,
    "errorMessage": "Произошла внутренняя ошибка сервера"
}

действие не выполняется.