Задача [API68]: API для резолюций в мобильном клиенте

Формулировка проблемы: в результате реализации задачи про добавление справочника типов работ по резолюции необходима аналогичная доработка в мобильном клиенте. Для этого необходимо доработать соответствующие методы API.

Решение: необходимо доработать следующие методы API:

Получение настроек справочника типов работ по резолюции

Необходимо добавить в метод API rest/api/settings/get выходной параметр resolution_work_types - типы работ по резолюции, который должен передавать массив json'ов на каждую строку соответствующего справочника:

  • dict_id - UUID записи справочника;

  • item_number - порядковый номер пункта в выпадающем списке;

  • item_process - действие, которое осуществляет пункт;

  • item_name - название пункта типа работы.

В случае, если такой справочник в системе отсутствует, API должен возвращать дефолтные значения (кроме dict_id), указанные в примере ниже.

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

{
  ...
  "resolution_work_types": [
    {
        "dict_id": "5d644484-a787-4b9f-91f7-760043355cdc",
        "item_number": 1,
        "item_process": "assignment",
        "item_name": "Работа"
    },
    {
        "dict_id": "7b953be8-bddb-4ce4-bbfd-ae9548f69c7f",
        "item_number": 2,
        "item_process": "agreement",
        "item_name": "Согласование"
    },
    {
        "dict_id": "3169a9dd-903f-422a-945e-ef9320df3768",
        "item_number": 3,
        "item_process": "approval",
        "item_name": "Утверждение"
    },
    {
        "dict_id": "4eb20dc9-e0ca-4a8a-846b-4ea3b9a46150",
        "item_number": 4,
        "item_process": "acquaintance",
        "item_name": "Ознакомление"
    },
    {
        "dict_id": "599914b8-d88b-4311-91a4-2583b0188063",
        "item_number": 5,
        "item_process": "resolution",
        "item_name": "Резолюция"
    },
    {
        "dict_id": "8f1c18f2-e3a8-4fd2-96ae-4f5309f5de86",
        "item_number": 6,
        "item_process": "send-document",
        "item_name": "Отправка документа"
    }
  ]
}
Получение информации о резолюции

Необходимо добавить в конец метода API rest/api/docflow/doc/get_resolution следующий выходной параметр к описанию каждого из пунктов резолюции (items):

  • dict_id - UUID записи справочника, соответствующего типу работы по резолюции;

  • item_name - название пункта типа работы.

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

 [
     {
         "statusID": 0,
         "projectID": "64750f61-3393-425b-b07d-f63974372fa5",
         "author": "Messi Leonel",
         "canEdit": "true",
         "controlled": "true",
         "maxFinishDate" : "2014-12-17 00:00:00"
         "items": [
             {
                 "name": "12345",
                 "itemID" : "32310f61-3393-425b-b07d-f63974372fa5",
                 "userID": "e45a1a15-3c8a-434f-afa7-4d4df8baa579",
                 "user": "Пользователь 1",
                 "users": [
                     {
                         "user": "Пользователь 2",
                         "userID": "9a426339-a140-4ca1-ada5-e441257660f1"
                     },
                     {
                         "user": "Пользователь 3",
                         "userID": "da902b13-a3e8-4e7e-adfd-0bf5e67be5ae"
                     }
                 ],
                 "finishdate": {
                     "date": "1414519200000"
                 },
                 "typeID": 3,
                 "completionFormID": "4eb20dc9-e0ca-4a8a-846b-4ea3b9a46150",
                 "dict_id": "5d644484-a787-4b9f-91f7-760043355cdc",
                 "item_name": "Работа"
             }
         ]
     }
 ]
Сохранение резолюции

Необходимо доработать входную json-строку с пунктами резолюций data в методе API rest/api/docflow/doc/save_resolution таким образом, чтобы кроме параметра typeID (тип резолюции) передавать и следующий параметр:

  • dict_id - UUID записи справочника.

Один из параметров typeID / dictID должен быть передан обязательно.

Альтернативные потоки событий для случая, когда не передан параметр dictID.

  • Альтернативный поток №1. Не передан параметр typeID. Сервер возвращает ошибку:

    Не передан тип резолюции

    действие не осуществляется.

  • Альтернативный поток №2. Передан некорректный параметр typeID (любое значение, отличное от 0 / 1 / 2 / 3 / 17 / 33). Сервер возвращает ошибку:

    Некорректный тип резолюции

    действие не осуществляется.

  • Альтернативный поток №3. Передан корректный (любое значение из 0 / 1 / 2 / 3 / 17 / 33), но несуществующий в справочнике параметр typeID. Сервер возвращает ошибку:

    Выбранный тип работы по резолюции отсутствует в справочнике. Выберите другое значение.

    действие не осуществляется.

  • Альтернативный поток №4. Если справочник resolution_work_types содержит несколько записей с переданным typeID, то в качестве типа работы необходимо использовать первый (с наименьшим порядковым номером) из списка типов с данным typeID.

Альтернативные потоки событий для случая, когда параметр dictID передан (незаивисмо от того, передан ли typeID).

  • Альтернативный поток №5. Передан некорректный параметр dictID. Сервер возвращает ошибку:

    Выбранный тип работы по резолюции отсутствует в справочнике. Выберите другое значение.

Пример передачи пункта резолюции

{
data=%5B%7B%22name%22%3A+%221%22%2C+
%22userID%22%3A+%227b953be8-bddb-4ce4-bbfd-ae9548f69c7f%22%2C+
%22finishDate%22%3A+%223411722780000%22%2C+
%22typeID%22%3A+%223%22%2C+
%22dict_id%22%3A+%225d644484-a787-4b9f-91f7-760043355cdc%22%2C&
type=SAVE&
workID=5d644484-a787-4b9f-91f7-760043355cdc
}