Описание API: различия между версиями

Материал из DPA
Перейти к навигации Перейти к поиску
(Новая страница: «Наполнение справочников»)
 
 
(не показано 12 промежуточных версий этого же участника)
Строка 1: Строка 1:
[[Наполнение справочников]]
+
=Опции спискового отображения=
 +
<pre>
 +
{
 +
  "sort": [
 +
    {
 +
      "selector": "name",
 +
      "desc": false
 +
    }
 +
  ],
 +
  "filter": [
 +
    [
 +
      "sortOrder",
 +
      "=",
 +
      123
 +
    ],
 +
    "and",
 +
    [
 +
      [
 +
        [
 +
          "reasonCategory",
 +
          "=",
 +
          1
 +
        ]
 +
      ]
 +
</pre>
 +
Параметры и их описание:
 +
 +
''RequireTotalCount''' - Возвращать ли общее количество записей, результат в зависимости от значения:<br> { data: <массив данных>, totalCount: <число-общее количество записей>} или
 +
''Skip'' - сколько сначала записей пропустить (используется для постраничного вывода)<br>
 +
''Take'' - сколько записей вернуть <br>
 +
''Sort'' - параметры сортировки в виде массива: <br>
 +
''SearchOperation'' - принимает значение "contains". на текущий момент другие значения параметра не поддерживаются. Используется совместно с SearchValue и ''SearchExpr'' для множественного поиска по вхождению строки в строку по одному или нескольким полям записи.
 +
''SearchValue'' - одно или несколько строковых значений для поиска, разделенных знаками пробела, например: "строка1" или "строка1 строка2 строка3"
 +
''SearchExpr'' - поле/поля, в которых будет производиться поиск строки/строк по вхождению: <br>
 +
  <pre>
 +
    "field" - одно поле
 +
    ["field1", "field2", ...] - несколько полей
 +
    </pre>
 +
''DataField'' - не используется
 +
<pre>
 +
        {selector: "category", - наименование поля для сортировки            desc: false - порядок сортировки по возрастанию/убыванию        }, - сортировка №1
 +
        {selector: "name", desc: false} - сортировка №2
 +
</pre>
 +
 
 +
Filter - фильтр записей в виде массива фильтров:
 +
<pre>    [
 +
        [
 +
        "name", - наименование поля фильтрации
 +
        "contains", - операция фильтра:
 +
            contains - содержит
 +
            notcontains - не содержит
 +
            startswith - начинается с
 +
            endswith - заканчивается на
 +
            = - равно
 +
            <> - не рвано
 +
        "программа" - значение фильтра
 +
        ],
 +
        "and", - тип соединения условий фильтра: and/or
 +
        ["category", "startswith", "категория"]]
 +
</pre>
 +
 
 +
=Справочники=
 +
{| class="wikitable"
 +
|-
 +
!№ !! Справочник!! Наименование справочника в API
 +
|-
 +
|1||3D-модели рабочих центров||ReferenceBookOfThreeDModel
 +
|-
 +
|2||Анализ циклов||ReferenceBookOfCycleAnalize
 +
|-
 +
|3||Бригады||ReferenceBookOfBrigade
 +
|-
 +
|4||Группы рабочих центров||ReferenceBookOfGroupOfWorkingCenters
 +
|-
 +
|5||Диапазоны значений||ValueRange
 +
|-
 +
|6||Должности||ReferenceBookOfPositions
 +
|-
 +
|7||Имена смен||ShiftName
 +
|-
 +
|8||Метатеги УП||ReferenceBookOfControlProgramTag
 +
|-
 +
|9||Недопроизводство||UnderproductionReason
 +
|-
 +
|10||Обработки||ReferenceBookOfControlProgramProcessingType
 +
|-
 +
|11||Отклонения||ReferenceBookReasonsOfOvertime
 +
|-
 +
|12||Приостановки/Пропуски||OperationRunSuspendReason
 +
|-
 +
|13||Простои||ReferenceBookReasonsOfDowntime
 +
|-
 +
|15||Типы изделий||ReferenceBookOfProductType
 +
|-
 +
|16||Типы причин простоя||ReferenceBookOfDowntimeReasonType
 +
|-
 +
|17||Типы программ||ReferenceBookOfControlProgramType
 +
|-
 +
|18||Шаблоны расписаний||ScheduleTemplate
 +
|-
 +
|19||Шаблоны сообщений||MessageTemplate
 +
|}
 +
Другие объекты системы:
 +
{| class="wikitable"
 +
|-
 +
!№ !!Наименование!!Наименование справочника в API
 +
|-
 +
|1||Изделия||(ReferenceBookOfProducts)
 +
|-
 +
|2||УП||(ReferenceBookOfControlPrograms)
 +
|-
 +
|3||Подпрограммы||(ReferenceBookOfSubprograms)
 +
|-
 +
|4||Группа тикета||(TicketGroup)
 +
|-
 +
|5||Источник тикета||(TicketSource)
 +
|-
 +
|6||Тип тикета||(TicketType)
 +
|-
 +
|7||Фильтр тикета||(TicketFilter)
 +
|-
 +
||8||Оповещение тикета||(TicketNotification)
 +
|}
 +
=Работа со структурой предприятия=
 +
'''Получение информации о конкретном предприятии 
 +
<pre> api/dpaEnterpriseStrusture/getEnterprise/{id}    api/ManageEnterpriseStructure/getEnterprise/{id} </pre>
 +
'''Получение информации о конкретном цехе 
 +
<pre>  api/dpaEnterpriseStrusture/getSite/{id}    api/ManageEnterpriseStructure/getSite/{id}</pre>
 +
'''Получение информации о конкретном подразделении 
 +
<pre> api/dpaEnterpriseStrusture/getDepartment/{id}    api/ManageEnterpriseStructure/getDepartment/{id}></pre>
 +
'''Получение информации о конкретном рабочем центре 
 +
<pre> api/dpaEnterpriseStrusture/getEquipment/{id}    api/ManageEnterpriseStructure/getEquipment/{id}</pre>
 +
'''Создание предприятия 
 +
<pre> api/dpaEnterpriseStrusture/create    api/ManageEnterpriseStructure/create
 +
 
 +
POST {       
 +
        "name": "Предприятие", - наименование       
 +
        "description": "Описание строкой", - описание   
 +
          } </pre>
 +
'''Cохранение информации о предприятии   
 +
<pre> api/dpaEnterpriseStrusture/saveEnterprise    api/ManageEnterpriseStructure/saveEnterprise
 +
 
 +
POST {       
 +
        "id": 348, - идентификатор       
 +
        "name": "Предприятие", - наименование       
 +
        "description": "Описание строкой", - описание                  // Настройки безопасности общие для всех структурных единиц: Предприятия/Цех/Подразделение/Рабочий центр - поэтому в остальных запросах описание пропущено       
 +
        "inherit": false, - признак наследуемости настроек безопасности (не используется для предприятия)       
 +
        "groupIds": [], - идентификаторы групп безопасности, которым будет доступен просмотр структурной единицы (в случае, если настройки не наследуются)                                       
 +
        "availableToAll": true, - признак доступности всем группам безопасности (в случае, если настройки не наследуются)   
 +
    } </pre> 
 +
'''Создание цеха 
 +
<pre>  api/dpaEnterpriseStrusture/createSite    api/ManageEnterpriseStructure/createSite
 +
 
 +
POST {
 +
        "name": "Цех №1", - наименование       
 +
        "description": "Описание строкой", - описание       
 +
        "enterpriseId": 123456 - идентификатор родительского предприятия   
 +
    }
 +
</pre>
 +
'''Сохранение информации о цехе   
 +
<pre>api/dpaEnterpriseStrusture/saveSite    api/ManageEnterpriseStructure/saveSite
 +
 
 +
POST {       
 +
        "id": 21, - идентификатор       
 +
        "name": "Цех №1", - наименование       
 +
        "description": "Описание строкой", - описание                 
 +
        "inherit": true,       
 +
        "groupIds": [],       
 +
        "availableToAll": false,       
 +
    }</pre> 
 +
'''Создание подразделения   
 +
<pre> api/dpaEnterpriseStrusture/createDepartment    api/ManageEnterpriseStructure/createDepartment
 +
 
 +
POST {       
 +
        "name": "Подразделение №1", - наименование       
 +
        "description": "Описание строкой", - описание       
 +
        "siteId": 123456 - идентификатор родительского цеха       
 +
        "ownerDepartmentId": 123456 - идентификатор родительского подразделения (не указывается если родителем является цех)   
 +
      } </pre>
 +
'''Сохранение информации о подразделении   
 +
<pre> api/dpaEnterpriseStrusture/saveDepartment    api/ManageEnterpriseStructure/saveDepartment
 +
 
 +
POST {       
 +
        "id": 22, - идентификатор       
 +
        "name": "Подразделение Alpha", - наименование       
 +
        "description": "описание", - описание       
 +
        "threeDModelId": 50253885, - идентификатор привязанной 3D-модели подразделения                 
 +
        "inherit": true,       
 +
        "groupIds": [],       
 +
        "availableToAll": false,   
 +
    } </pre> 
 +
'''Cоздание РЦ   
 +
<pre> api/dpaEnterpriseStrusture/createEquipment    api/ManageEnterpriseStructure/createEquipment
 +
 
 +
POST {       
 +
        "departmentId": 56539853, - идентификатор родительского подразделения       
 +
        "name": "Alpha 700-IST-1", - наименование       
 +
        "description": "описание", - описание       
 +
        "equipmentGroupIds": [], - идентификаторы групп РЦ, в которые входи РЦ       
 +
        "driverIdentifier": "68f6e95d-fa95-4dd6-a670-3f4181a693ab", - идентификатор драйвера, к которому привязан РЦ       
 +
        "serverId": 23, - идентификатор сервера DPA, к которому привязан РЦ   
 +
    } </pre>
 +
'''Cохранение информации о РЦ 
 +
<pre> api/dpaEnterpriseStrusture/saveEquipment    api/ManageEnterpriseStructure/saveEquipment
 +
 
 +
POST {
 +
        "id": 26, - идентификатор
 +
        "name": "Alpha 700-IST-1", - наименование
 +
        "model": "модель рабочего центра", - наименование модели
 +
        "inventoryNumber": "ITX-111", - инвентарный номер
 +
        "description": "", - описание
 +
        "equipmentGroupIds": [], - идентификаторы групп РЦ, в которые входи РЦ
 +
        "driverIdentifier": "68f6e95d-fa95-4dd6-a670-3f4181a693ab", - идентификатор драйвера, к которому привязан РЦ
 +
        "serverId": 23, - идентификатор сервера DPA, к которому привязан РЦ
 +
        "mainChannel": 0, - номер основного канала драйвера
 +
        "channelInfoList": [ - информация о каналах драйвера
 +
         
 +
 
 +
{                "channelNumber": 0, - номер канала                "isUsedInSummaryState": true - учавствует ли канал в формировании состояния РЦ            }
 +
,
 +
         
 +
 
 +
{                "channelNumber": 1,                "isUsedInSummaryState": false            }
 +
        ],
 +
       
 +
        "releaseCountingType": 0, - тип подсчета выпуска (0-по нормам УП; 1-по счётчику; 2-без выпуска)
 +
        "counterIncrementType": 0, - тип инкрементации счетчика (0-инкрементация на разницу значений счетчика; 1-инкрементация на единицу)
 +
        "releaseDiscreteness": 1, - дискретность выпуска по счётчику
 +
        "normativeReleaseDiscreteness": 1, - дискретность выпуска по норме
 +
        "releaseQualityMark": 0, -  отметка качества(0-условно-годные; 1-годные; 2-брак)
 +
        "masterMustComfirmIncompleteJobClose": true, - Мастер должен подтверждать закрытие задания с недопроизводством или перепроизводством
 +
        "masterMustComfirmDisorderedJobStart": true, - Мастер должен подтверждать запуск задания не по порядку и пропуск задания
 +
        "allowMultipleTasksSimultaneously": true, - разрешить запуск нескольких заданий одновременно
 +
        "prohibitedJobStartWhenAnotherJobIsSuspended": false, - Запретить запуск задания, если другое задание стоит на паузе
 +
        "allowMultiplePersonalShifts": true, - Разрешить открытие больше одной смены оператора одновременно
 +
        "useMachineStatisticsOutput": true, - Использовать выпуск по по машинным данным
 +
       
 +
        "parseNcDataType": 1, - тип определения УП (0-отключено; 1-по имени УП; 2-по метатегам УП)
 +
       
 +
        "threeDModelId": 25, - идентификатор 3D-модели       
 +
 
 +
        "inherit": false,
 +
        "groupIds": [ 5 ],
 +
        "availableToAll": false,
 +
    }
 +
</pre>
 +
 
 +
=Шаблоны расписаний=
 +
<pre>[POST] /api/schedule/saveScheduleTemplateRecord </pre>
 +
пример недельного шаблона расписания:
 +
<pre>
 +
{
 +
  "id": -1, - идентификатор шаблона (-1 для создания нового)
 +
  "name": "наименование шаблона расписания", - наименование
 +
  "templateType": 2, - тип шаблона (1-дневной; 2-недельный)
 +
  "intervals": [ - коллекция интервалов, описывающих расписание
 +
 
 +
 
 +
{ "shiftId": 641, - идентификатор имени смены     
 +
  "start": "00.00:00:00", - время начала интервала (смещение от начала недели, т.е. от понедельника 00:00)     
 +
  "end": "00.04:10:00" - время окончания интервала      // время начала и окончания интервала передается в разрезе дней. В случае если смена переходит из одного дня в другой, необходимо передать два интервала - для первого дня и для второго.      // интервалы времени должны передаваться в хронологическом порядке.    }
 +
,
 +
    { "shiftId": 642, "start": "00.04:10:00", "end": "00.09:20:00" },
 +
    { "shiftId": 641, "start": "00.09:20:00", "end": "01.00:00:00" },
 +
    { "shiftId": 641, "start": "01.00:00:00", "end": "01.07:30:00" },
 +
    { "shiftId": 643, "start": "01.07:30:00", "end": "01.13:40:00" },
 +
    { "shiftId": 641, "start": "01.13:40:00", "end": "02.00:00:00" },
 +
    { "shiftId": 641, "start": "02.00:00:00", "end": "02.04:30:00" },
 +
    { "shiftId": 644, "start": "02.04:30:00", "end": "02.11:50:00" },
 +
    { "shiftId": 641, "start": "02.11:50:00", "end": "02.14:20:00" },
 +
    { "shiftId": 53144555, "start": "02.14:20:00", "end": "02.21:10:00" },
 +
    { "shiftId": 641, "start": "02.21:10:00", "end": "03.00:00:00" },
 +
    { "shiftId": 641, "start": "03.00:00:00", "end": "04.00:00:00" },
 +
    { "shiftId": 641, "start": "04.00:00:00", "end": "05.00:00:00" },
 +
    { "shiftId": 641, "start": "05.00:00:00", "end": "06.00:00:00" },
 +
    { "shiftId": 641, "start": "06.00:00:00", "end": "07.00:00:00" }
 +
  ]
 +
}
 +
</pre>
 +
'''Отвязка структурной единицы от родительского расписания:
 +
<pre>
 +
[POST] api/schedule/detachScheduleFromParent/{scheduleOwnerType}/{scheduleOwnerId}
 +
где:
 +
    scheduleOwnerType - тип структурной единицы открепляемой от родительского расписания (1-РЦ; 2-подразделение; 3-цех; 5-предприятие)
 +
    scheduleOwnerId - идентификатор структурной единицы </pre>
 +
при отвязке от родительского расписания для структурной единицы содается собственное расписание и далее работа производится уже с ним
 +
 
 +
'''Приявязка структурной единицы к родительскому расписанию:'''
 +
<pre> [POST] api/schedule/attachScheduleToParent/{scheduleOwnerType}/{scheduleOwnerId}
 +
где:
 +
    scheduleOwnerType - тип структурной единицы прикрепляемой к родительскому расписанию (1-РЦ; 2-подразделение; 3-цех; 5-предприятие)
 +
    scheduleOwnerId - идентификатор структурной единицы </pre>
 +
при привязке к родительскому расписанию происходит удаление собственного расписания работы структурной единицы
 +
 
 +
'''Применения шаблона расписания к расписанию структурной единицы:
 +
<pre> [POST] api/schedule/applyScheduleTemplateToSchedule/{scheduleOwnerType}/{scheduleOwnerId}/{scheduleTemplateId}</pre>
 +
где:
 +
    scheduleOwnerType - тип структурной единицы (1-РЦ; 2-подразделение; 3-цех; 5-предприятие)
 +
    scheduleOwnerId - идентификатор структурной единицы
 +
    scheduleTemplateId - идентификатор шаблона расписания
 +
 
 +
тело метода:
 +
 
 +
<pre>{ 
 +
      "start": "2022-07-03T19:00:00.000Z", - начало периода, на который применяется шаблон расписания 
 +
      "end": "2022-07-10T19:00:00.000Z" - окончание периода, на который применяется шаблон расписания } </pre>
 +
 
 +
=Получение информации по простоям=
 +
'''Журнал простоев
 +
<pre>    [POST] http://dpadev/api/journals/getJournalDatas/DowntimeReason
 +
    Тело:
 +
    {
 +
      "dateTimeFrom": "2022-07-10T21:00:00.000Z", - время начала периода
 +
      "dateTimeUntil": "2022-07-11T20:59:59.999Z", - время окончания периода
 +
      "itemIds": [1, 2, 3], - список идентификаторов оборудования
 +
      "gridOptions": { - опции спискового отображения (описание есть в вопрос №1)
 +
        "requireTotalCount": true,
 +
        "skip": 0,
 +
        "take": 20,
 +
        "sort": [
 +
       
 +
 
 +
{            "selector": "startDate",            "desc": true          }
 +
        ]
 +
      }
 +
    }
 +
</pre>
 +
 
 +
Возвращаемая структура данных:
 +
 
 +
<pre>    [
 +
     
 +
{           
 +
        "downtimeInfo": "Delta  UQ-3",           
 +
        "startDate": "2022-07-11T08:13:49.1990938+00:00", - начало периода причины простоя           
 +
        "endDate": "2022-07-11T08:13:49.6935685+00:00", - окончание периода причины простоя           
 +
        "status": 2, - статус простоя (1-необработанный;2-обработанный)           
 +
        "reason": "Перерыв между сменами", - наименование причины простоя           
 +
        "timeStamp": "2022-07-11T11:13:52.477789+03:00", - время последней классификации периода простоя           
 +
        "operatorComment": null, - комментарий причины простоя           
 +
        "user": "Пользоватль 123", - имя пользователя классифицировашего период простоя           
 +
        "id": 356166430, - идентификатор периода причины простоя           
 +
        "createdOn": "2022-07-11T08:13:52.477789+03:00", - время создания периода причины простоя           
 +
        "createdBy": 1 - идентификатор пользователя создавшего период причины простоя        }
 +
    ]
 +
</pre>
 +
 
 +
=Работа с пользователями=
 +
'''Добавление/удаление пользователей в/из группы'''
 +
<pre> [POST] api/securityManagment/subjectInheritance/{userId}
 +
   
 +
    где: userId - идентификатор пользователя
 +
</pre>
 +
тело:
 +
<pre> 
 +
 
 +
{        "added": [1, 2, 3], - список идентификаторов добавляемых пользователю групп       
 +
          "removed": [4, 5, 6] - список идентификаторов удаляемых у пользователя групп    } </pre>
 +
   
 +
'''Получение списка пользователей:'''
 +
<pre>       
 +
[POST] api/security/userRecords
 +
тело:
 +
     
 +
опции спискового отображения:
 +
{
 +
           
 +
    "sort": null,           
 +
    "requireTotalCount": true,           
 +
    "searchOperation": "contains",           
 +
    "searchValue": null,           
 +
    "skip": 0,           
 +
    "take": 20,        }
 +
</pre>
 +
       
 +
Возращаемая структура данных:
 +
<pre>      {
 +
            totalCount: 10,
 +
            data:[
 +
             
 +
 
 +
{         
 +
          "personnelNumber": "1378698466", - табельный номер                   
 +
          "positionName": null, - наименование занимаемой должности                   
 +
          "positionId": null, - идентификатор занимаемой должности                   
 +
          "isSystemUser": false, - признак того, что пользователь системный                   
 +
          "surname": "Виноградов", - фамилия                   
 +
          "name": "Михаил", - имя                   
 +
          "patronymic": "Сергеевич", - отчество                   
 +
          "language": "ru-RU", - текущая локализация                   
 +
          "blocked": false, - признак заблокированности                   
 +
          "id": 2689, - идентификатор пользователя                   
 +
          "displayName": "Виноградов М.С." - отображаемое имя                }</pre>             
 +
 
 +
'''Получение списка групп:
 +
<pre> [POST] api/security/groupRecords
 +
 
 +
{ - опции спискового отображения           
 +
          "sort": null,           
 +
          "requireTotalCount": true,           
 +
          "searchOperation": "contains",           
 +
          "searchValue": null,           
 +
          "skip": 0,           
 +
          "take": 20,        } </pre>
 +
       
 +
Возвращаемая структура данных:
 +
<pre>        {
 +
            totalCount: 30,
 +
            data:[
 +
             
 +
 
 +
{                   
 +
          "name": "Операторы", - наименование                   
 +
          "description": null, - описание                   
 +
          "id": 2, - идентификатор                   
 +
          "displayName": "Операторы" - отображаемое наименование                } </pre>
 +
 
 +
=Работа с заданиями=
 +
'''Получение списка заданий:
 +
<pre> [POST] api/jobs/getJobDatas
 +
 +
    "requireTotalCount": true,
 +
    "skip": 0,
 +
    "take": 20,
 +
    "sort": [ { "selector": "startDate", "desc": true } ]
 +
} </pre>
 +
Результат:
 +
<pre>
 +
{
 +
            "id": 9347, - идентификатор
 +
            "equipmentId": 899, - идентификатор оборудования, на которое запланировано задание
 +
            "equipment": "WC2", - наименование оборудования, на которое запланировано задание
 +
            "isMaintenance": true, - признак того, что задание является ТОиР
 +
            "productionType": 5, - тип задания (1-производство, 2-Наладка, 3-Внедрение, 4-Производство с наладкой, 5-ТОиР)
 +
            "order": null, - Название задания (в версии 5.7 не используется для ТОиР)
 +
            "productName": null, - наименование производимого изделия (для заданий типа 1-4)
 +
            "productVersion": null, - номер версии производимого изделия (для заданий типа 1-4)
 +
            "plannedCount": null, - плановое количество (для заданий типа 1,3,4)
 +
            "actualCount": null, - фактическое количество (для заданий типа 1,3,4)
 +
            "rejectedCount": null, - количество брака (для заданий типа 1,3,4)
 +
            "technologyVersion": null, - версия технологии, по которой производится изделие (для заданий типа 1-4)
 +
            "stage": null, - наименование этапа технологии  (для заданий типа 1-4)
 +
            "plannedStart": "2022-07-19T12:20:00+05:00", - плановое время начала
 +
            "plannedEnd": "2022-07-19T13:20:00+05:00", - плановое время окончания
 +
            "actualStart": null, - фактическое время начала
 +
            "actualEnd": null, - фактическое время окончания
 +
            "status": 1, - первичный статус задания (0-создани, 1-запланировано, 2-начато, 3-завершено)
 +
            "secondaryStatus": 0, - вторичный статус задания (0-нет, 1-пауза, 2-пропущено, 3- ---, 4-пропущено и скрыто)
 +
            "isImported": false - признак того, что задание получено через импорт
 +
        }
 +
</pre>
 +
'''Создание задания на производство
 +
<pre>
 +
[POST] api/jobs/createAndAssign
 +
            {
 +
                "order": "job/order name", - Название задания
 +
                "lot": null, - партия(не используется)
 +
                "productVersionId": 1424, - идентификатор версии производимого изделия (может не указываться)
 +
                "technologyVersionId": 1455, - идентификатор версии технологии, по которой производится изделие (может не указываться)
 +
                "technologyStageId": 1456, - идентификатор этапа технологии, по которому производится изделие (указываться совместно с technologyVersionId)
 +
                "count": "111", - плановое количество
 +
                "startDate": "2022-07-19T08:16:00.000Z", - плановое время начала (указывается совместно с временем окончания и оборудованием)
 +
                "endDate": "2022-07-19T18:03:00.000Z", - плановое время окончания (указывается совместно с временем начала и оборудованием)
 +
                "productionType": 1, - тип задания (1-производство, 2-Наладка, 3-Внедрение, 4-Производство с наладкой)
 +
                "comment": "some comment here", - комментарий
 +
                "equipmentId": 898 - идентификатор оборудования, на которое запланировано задание (указывается совместно с временем начала и окончания)
 +
            }
 +
</pre>
 +
'''Редактировоание задания на производство:
 +
<Pre>
 +
[POST] api/jobs/updateAndAssign/{идентификатор_задания}
 +
 
 +
            {
 +
                "order": "job/order name", - Название задания
 +
                "lot": null, - партия(не используется)
 +
                "productVersionId": 1424, - идентификатор версии производимого изделия (может не указываться)
 +
                "technologyVersionId": 1455, - идентификатор версии технологии, по которой производится изделие (может не указываться)
 +
                "technologyStageId": 1456, - идентификатор этапа технологии, по которому производится изделие (указывается совместно с technologyVersionId)
 +
                "count": "111", - плановое количество
 +
                "startDate": "2022-07-19T08:16:00.000Z", - плановое время начала (указывается совместно с временем окончания и оборудованием)
 +
                "endDate": "2022-07-19T18:03:00.000Z", - плановое время окончания (указывается совместно с временем начала и оборудованием)
 +
                "productionType": 1, - тип задания (1-производство, 2-Наладка, 3-Внедрение, 4-Производство с наладкой)
 +
                "comment": "some comment here", - комментарий
 +
                "equipmentId": 898 - идентификатор оборудования, на которое запланировано задание (указывается совместно с временем начала и окончания)
 +
            }
 +
</pre>
 +
'''Создание и редактирование задания ТОиР:
 +
<pre>[POST] api/jobs/saveMaintenanceJob
 +
 
 +
            {
 +
                "id": 0, - идентификатор задания (0-при создании)
 +
                "equipmentId": 899, - идентификатор оборудования, на которое запланировано задание
 +
                "startTime": "2022-07-19T07:20:00.000Z", - плановое время начала
 +
                "endTime": "2022-07-19T08:20:00.000Z", - плановое время окончания
 +
                "type": 1, - тип ТОиР (1-плановый, 2-внеплановый, 3-авария)
 +
                "cause": "reason", - причина(текст)
 +
                "mode": 2, - всегда=2
 +
                "comment": "comment", - комментарий
 +
            }
 +
</pre>
 +
=Работа с технологиями=
 +
'''Получение списка технологий
 +
<pre>
 +
[POST] api/technology/getGridRecords
 +
 
 +
{ - опции спискового отображения
 +
"sort": null,
 +
"requireTotalCount": true,
 +
"searchOperation": "contains",
 +
"searchValue": null,
 +
"skip": 0,
 +
"take": 20
 +
}
 +
</pre>
 +
Результат:
 +
<pre>
 +
{
 +
"rootId": "1454_1455", - ключ
 +
"displayName": "Подшипник 58.6*10/C12 от 01.04.2021 #1", - наименование версии технологии
 +
"productVersionId": 1424, - идентификатор вкрсии изделия
 +
"productVersionName": "Подшипник 58.6*10/C12 #1", - наименование версии изделия
 +
"technology": { - технология
 +
"key": {
 +
"id": 1454, - идентификатор технологии
 +
"typeId": 326 - идентификатор типа объекта "технология"
 +
},
 +
"id": 1454, - идентификатор технологии
 +
"name": "Подшипник 58.6*10/C12 от 01.04.2021", - наименование технологии
 +
"description": "", - описание
 +
"authorName": "SystemUserName", - имя пользователя, создавшего технологию
 +
"productVersionName": "Подшипник 58.6*10/C12 #1",
 +
},
 +
"technologyVersion": { - версия технологии
 +
"key": { - ключ
 +
"id": 1455, - идентификатор версии технологии
 +
"typeId": 333 - идентификатор типа объекта "версия технология"
 +
},
 +
"id": 1455,
 +
"name": "Подшипник 58.6*10/C12 от 01.04.2021 #1", - наименование версии технологии
 +
"description": null, - описание
 +
"authorName": "SystemUserName", - имя пользователя, создавшего версию технологии
 +
"lifeCycleState": 1, - состояние (0-новая, 1-действующая, 2-недействительная, 3-ожидает проверки, 4-редактируемая, 5-устаревшая)
 +
"stateChangeAuthorName": "SystemUserName", - имя пользователя, установившего состояние
 +
"activeFrom": "2021-04-01T05:00:00+05:00", - начало периода активности
 +
"activeTo": "2030-01-01T05:00:00+05:00", - окончание периода активности
 +
},
 +
"displayAuthorName": "SystemUserName", - имя пользователя, создавшего версию технологии
 +
}
 +
</pre>
 +
'''Создание технологий:
 +
 
 +
Для созданной технологии сразу создается версия технологии. Версия технологии в свою очередь заполняется демонстрационными данными (этап->операции).
 +
<pre>
 +
[POST] api/technology/createTechnology
 +
 
 +
{
 +
"name": "Technology Name", - наименование технологии
 +
"description": "description here", - описание
 +
"productVersionId": 1424 - идентификатор версии производимого изделия
 +
}
 +
</pre>
 +
Результат: идентификатор технологии
 +
 
 +
'''Редактирование технологии:
 +
<pre>
 +
[POST] api/technology/updateTechnology
 +
 
 +
{
 +
"key": { - ключ
 +
"id": 9378, - идентификатор технологии
 +
"typeId": 326 - идентификатор типа объекта "технология"
 +
},
 +
"description": "description here" - описание
 +
}
 +
</pre>
 +
Результат: идентификатор технологии
 +
 
 +
'''Добавление версии технологии:
 +
<pre>
 +
[POST] api/technology/createTechnologyVersion/{id},{typeId}
 +
</pre>
 +
Результат:
 +
<pre>
 +
{ - ключ
 +
"id": 9442, - идентификатор версии технологии
 +
"typeId": 333 - идентификатор типа объекта "версия технология"
 +
}
 +
</pre>
 +
 
 +
'''Редактирование версии технологии:
 +
 +
<pre>
 +
[POST] api/technology/updateTechnologyVersion
 +
 
 +
{
 +
"key": { - ключ
 +
"id": 9442,
 +
"typeId": 333,
 +
},
 +
"versionDescription": "description here", - описание
 +
"activeFrom": "2022-07-19T00:00:00+05:00", - начало периода активности
 +
"activeTo": "2072-07-19T00:00:00+05:00", - окончание периода активности
 +
"lifeCycleState": 0, - состояние (0-новая, 1-действующая, 2-недействительная, 3-ожидает проверки, 4-редактируемая, 5-устаревшая)
 +
}
 +
</pre>
 +
'''Cоздание этапа версии технологии:
 +
<pre>
 +
[POST] api/technology/createStage/{id},{typeId} 
 +
// {id},{typeId} - идентификатор версии технологии и объекта "версия технологии"
 +
 
 +
 
 +
{
 +
"name": "stage name here" - наименование
 +
}
 +
</pre>
 +
 
 +
'''Редактирование этапа технологии:
 +
 
 +
<pre>[PUT] api/technology/updateStage
 +
тело:
 +
 
 +
{
 +
"key": { - ключ этапа технологии
 +
"id": 9443, - идентификатор этапа технологии
 +
"typeId": 331 - идентификатор типа объекта "этап технологии"
 +
},
 +
"name": "Stage name here", - наименование этапа
 +
"description": "description here" - описание
 +
}
 +
</pre>
 +
 
 +
'''Удаление этапа технологии:
 +
<pre> [DELETE] api/technology/removeStage/{id},{typeId} </pre>
 +
 
 +
'''Получение списка привязанных к этапу РЦ/групп РЦ:
 +
<pre>[GET] api/technology/getStageEquipments/{id},{typeId}
 +
{id},{typeId} - идентификатор этапа и объекта "этап" </pre>
 +
Результат массив объектов, привязанных рабочих центров и групп рабочих центров, вида:
 +
<pre>
 +
{ - для рабочего центра
 +
"department": "Предприятие\\Производственная площадка №1\\Подразделение №1", - подразделение
 +
"group": "", - наименование групп РЦ, в которые входит оборудование
 +
"key": { - ключ привязки РЦ
 +
"id": 9564, - идентификатор привязки РЦ к этапу технологии
 +
"typeId": 332 - идентификатор типа объекта "привязка РЦ к этапу технологии"
 +
},
 +
"objectKey": { - ключ РЦ
 +
"id": 899, - идентификатор РЦ
 +
"typeId": 150 - идентификатор типа объекта "РЦ"
 +
},
 +
"name": "WC2" - наименование РЦ
 +
},
 +
{ - для группы РЦ
 +
"equipments": [ - список РЦ входящих в группу
 +
{
 +
"department": "Предприятие\\Производственная площадка №1\\Подразделение №1",
 +
"group": "new group",
 +
"key": null,
 +
"objectKey": {
 +
"id": 898,
 +
"typeId": 150
 +
},
 +
"name": "WC1"
 +
},
 +
{
 +
"department": "Предприятие\\Производственная площадка №1\\Подразделение №1",
 +
"group": "new group",
 +
"key": null,
 +
"objectKey": {
 +
"id": 899,
 +
"typeId": 150
 +
},
 +
"name": "WC2"
 +
}
 +
],
 +
"key": { - ключ привязки РЦ/группы РЦ
 +
"id": 9602,
 +
"typeId": 332
 +
},
 +
"objectKey": { - ключ группы РЦ
 +
"id": 9601,
 +
"typeId": 255
 +
},
 +
"name": "new group" - наименование группы оборудования
 +
}
 +
</pre>
 +
'''Добавление рабочего центра к этапу технологии:
 +
<pre>[PUT] api/technology/addStageEquipment/{id},{typeId}
 +
{id},{typeId} - идентификатор этапа и объекта "этап"</pre>
 +
тело: [898,899] - список идентификаторов РЦ
 +
результат аналогичен результату для получения списка привязанных к этапу РЦ/групп РЦ
 +
 
 +
'''Добавление группы рабочих центров к этапу технологии:
 +
<pre> [PUT] /api/technology/addStageEquipmentGroup/{id},{typeId}
 +
{id},{typeId} - идентификатор этапа и объекта "этап"</pre>
 +
тело: 9601 - идентификатор группы РЦ
 +
результат аналогичен результату для получения списка привязанных к этапу РЦ/групп РЦ
 +
 
 +
'''Удаление РЦ из этапа технологии:
 +
<pre>[DELETE] api/technology/removeEquipmentFromStage/{id},{typeId}
 +
{id},{typeId} - идентификатор привязки РЦ/группы РЦ к этапу и объекта "привязка РЦ/группа РЦ к этапу"
 +
 
 +
 
 +
{ - ключ привязки РЦ
 +
"id": 9563, - идентификатор привязки РЦ к этапу технологии
 +
"typeId": 332 - идентификатор типа объекта "привязка РЦ к этапу технологии"
 +
}</pre>
 +
 
 +
'''Добавление операции в этап технологии:
 +
<pre> [POST] api/technology/addOperation/{id},{typeId}
 +
{id},{typeId} - идентификатор этапа и объекта "этап"
 +
 
 +
{
 +
"name": "operation name here", - наименование операции
 +
"category": 0 - категория операции(0-инструкция/текст, 1-работа по УП, 2-контроль качества, 3-ввод данных)
 +
}
 +
</pre>
 +
Результат:
 +
<pre>
 +
{
 +
"id": 9572, - идентификатор операции
 +
"key": { - ключ операции
 +
"id": 9572, - идентификатор операции
 +
"typeId": 336 - идентификатор типа объекта "технологическая операция"
 +
},
 +
"name": "operation name here", - наименование операции
 +
"description": null, - описание
 +
"category": 0, - категория операции(0-инструкция/текст, 1-работа по УП, 2-контроль качества, 3-ввод данных)
 +
"type": 4, - тип операции (0-подготовка партии, 1-подготовка штуки, 2-основная, 3-завершение штука, 5-завершение партия)
 +
"typeString": "Завершающая - партия", - строковое представление типа операции
 +
"duration": "00:00:00", - длительность
 +
"durationSeconds": 0, - длительность в секундах
 +
"durationHumanized": "0 сек.", - текстовое представление длительности
 +
"order": 7, - порядковый номер операции в этапе
 +
"stageKey": { - ключ родительского этапа технологии
 +
"id": 9443,
 +
"typeId": 331
 +
},
 +
"inputFields": null, - поля ввода(для операции "ввод данных")
 +
"text": null - текст (для операции инструкция/текст)
 +
}
 +
</pre>
 +
 
 +
'''Редактирование операции:
 +
<pre>[PUT] api/technology/updateOperation
 +
 
 +
 
 +
{
 +
"id": 9448, - идентификатор операции
 +
"key": { - ключ операции
 +
"id": 9448,
 +
"typeId": 336
 +
},
 +
"name": "operation name here", - наименование
 +
"description": "operation description here", - описание
 +
"category": 0, - категория(0-инструкция/текст, 1-работа по УП, 2-контроль качества, 3-ввод данных)
 +
"type": 3, - тип (0-подготовка партии, 1-подготовка штуки, 2-основная, 3-завершение штука, 5-завершение партия)
 +
"duration": "00:12:34", - длительность
 +
"stageKey": { - ключ этапа
 +
"id": 9443,
 +
"typeId": 331
 +
},
 +
"inputFields": [ - поля ввода для категории 3
 +
{ - поле ввода типа индикатор (значение берется из индикатора)
 +
"name": "measurement 1", - наименование
 +
"fromIndicator": true, - признак того, что значение из индикатора
 +
"editable": true, - признак возможности ручного редактирования
 +
"equipmentIndicators": [ - список привязки индикаторов для каждого РЦ этапа
 +
{
 +
"equipmentId": 8708, - идентификатор РЦ
 +
"indicatorId": 8749 - идентификатор индикатора
 +
}
 +
]
 +
},
 +
{ - поле ввода (ручной ввод)
 +
"name": "measurement 2", - наименование
 +
"fromIndicator": false, - признак того, что значение из индикатора
 +
}
 +
],
 +
"text": "some text here", - ткст для категории 0
 +
}
 +
</pre>
 +
результат аналогичен результату при добавлении операции
 +
 
 +
'''Назначение УП для РЦ по операции категории 1-работа по УП:
 +
<pre>
 +
[POST] api/technology/setNcProgramForOperation/{id},{typeId}/{programVersionId}
 +
{id},{typeId} - идентификатор операции и объекта "технологическая операция"
 +
{programVersionId} - идентификатор версии УП
 +
 
 +
[ - список ключей привязок РЦ/групп РЦ к этапу, на которые применяется выбранная УП
 +
{ - ключ
 +
"id": 9626,
 +
"typeId": 332
 +
},
 +
{ - ключ
 +
"id": 9569,
 +
"typeId": 332
 +
}
 +
]
 +
</pre>
 +
Результат:
 +
<pre>
 +
[ - список привязок РЦ/группа РЦ к версиям УП
 +
{
 +
"key": { - ключ привязки РЦ/группы РЦ к этапу
 +
"id": 9626,
 +
"typeId": 332
 +
},
 +
"equipmentId": null, - идентификатор оборудования (для РЦ)
 +
"isGroup": true, - признак того, что это группа РЦ
 +
"name": "new group", - наименование группы РЦ (для группы РЦ)
 +
"department": "", - подразделение (для РЦ)
 +
"group": "", - группы РЦ, в которые входит РЦ (для РЦ)
 +
"programKey": { - ключ версии УП
 +
"id": 1429,
 +
"typeId": 245
 +
},
 +
"programName": "Подшипник 58.6*10/C12",
 +
"versionNumber": 1,
 +
"equipments": [
 +
{
 +
"department": "Предприятие\\Производственная площадка №1\\Подразделение №1",
 +
"group": "new group",
 +
"key": null,
 +
"objectKey": {
 +
"id": 898,
 +
"typeId": 150
 +
},
 +
"name": "WC1"
 +
},
 +
{
 +
"department": "Предприятие\\Производственная площадка №1\\Подразделение №1",
 +
"group": "new group",
 +
"key": null,
 +
"objectKey": {
 +
"id": 899,
 +
"typeId": 150
 +
},
 +
"name": "WC2"
 +
}
 +
]
 +
},
 +
{
 +
"key": {
 +
"id": 9569,
 +
"typeId": 332
 +
},
 +
"equipmentId": 8708,
 +
"isGroup": false,
 +
"name": "MMC Emulator",
 +
"department": "Предприятие\\Производственная площадка №1\\Подразделение №1",
 +
"group": "group 2",
 +
"programKey": {
 +
"id": 1429,
 +
"typeId": 245
 +
},
 +
"programName": "Подшипник 58.6*10/C12",
 +
"versionNumber": 1,
 +
"equipments": null
 +
}
 +
]
 +
</pre>
 +
 
 +
'''Cмена порядка операции в этапе:
 +
<pre>
 +
[PUT] api/technology/reorderOperation/{id},{typeId}
 +
{id},{typeId} - идентификатор операции и объекта "технологическая операция"
 +
тело: 2 - новый порядковый номер операции в этапе
 +
</pre>
 +
 
 +
'''Удаление операции:
 +
<pre> [DELETE] api/technology/removeOperation/{id},{typeId}
 +
{id},{typeId} - идентификатор операции и объекта "технологическая операция" </pre>
 +
результат:
 +
<pre>
 +
{ - ключ операции
 +
"id": 9448,
 +
"typeId": 336
 +
}</pre>
 +
 
 +
'''Добавление медиа-файла к версии технологии/операции:
 +
<pre> [POST] api/mediaFile/addFile/{id},{typeId}
 +
{id} - идентификатор версии технологии или операции
 +
{typeId} - идентификатор соответствующего типа версии технологии или операции
 +
в form прикрепляется тело файла </pre>
 +
=Работа с управляющими программами=
 +
создание/редактирование в версию УП через метод:
 +
<pre>
 +
[POST] /api/ReferenceBook/setVersionOfControlProgramEdit
 +
    тело запроса:
 +
 
 +
{
 +
        "Id": 1, - идентификатор версии
 +
        "OwnerId": 2, - идентификатор УП
 +
        "VersionNumber": 3, - номер версии
 +
        "VersionStatus": 4, - статус версии (0-неактивна; 1-активна)
 +
        "VersionDescription": "string", - описание версии
 +
        "NumberOfProducts": 5, - количество выпуска
 +
        "FileName": "fileName", - имя файла
 +
        "FileFormat": 0, - формат файла (0-текст; 1-текст utf-8; 2-текст ascii; 3-текст win1-251; 4-текст cp866; 5-текст kio8r; 6-mazatrol; 7-текст utf-16; 8-текст utf-32; 9-dornier xml)
 +
        "LinkedParameterSets": [6, 7], - массив идентификаторов наборов параметров
 +
        "LinkedSubprograms": [ - список привязанных подпрограмм
 +
            {
 +
                "SubprogramId": 8, - идентификатор подпрограммы
 +
                "SubprogramName": "name", - имя подпрограммы
 +
                "LinkedParametersSets": [9, 10] - массив идентификаторов наборов параметров
 +
            }
 +
        ],
 +
    }
 +
</pre>

Текущая версия на 02:15, 17 ноября 2022

Опции спискового отображения

{
  "sort": [
    {
      "selector": "name",
      "desc": false
    }
  ],
  "filter": [
    [
      "sortOrder",
      "=",
      123
    ],
    "and",
    [
      [
        [
          "reasonCategory",
          "=",
          1
        ]
      ]

Параметры и их описание:

RequireTotalCount' - Возвращать ли общее количество записей, результат в зависимости от значения:
{ data: <массив данных>, totalCount: <число-общее количество записей>} или Skip - сколько сначала записей пропустить (используется для постраничного вывода)
Take - сколько записей вернуть
Sort - параметры сортировки в виде массива:
SearchOperation - принимает значение "contains". на текущий момент другие значения параметра не поддерживаются. Используется совместно с SearchValue и SearchExpr для множественного поиска по вхождению строки в строку по одному или нескольким полям записи. SearchValue - одно или несколько строковых значений для поиска, разделенных знаками пробела, например: "строка1" или "строка1 строка2 строка3" SearchExpr - поле/поля, в которых будет производиться поиск строки/строк по вхождению:

 
     "field" - одно поле
    ["field1", "field2", ...] - несколько полей
    

DataField - не используется

 
        {selector: "category", - наименование поля для сортировки             desc: false - порядок сортировки по возрастанию/убыванию         }, - сортировка №1
        {selector: "name", desc: false} - сортировка №2

Filter - фильтр записей в виде массива фильтров:

    [
        [
         "name", - наименование поля фильтрации
         "contains", - операция фильтра: 
            contains - содержит
            notcontains - не содержит
            startswith - начинается с 
            endswith - заканчивается на
            = - равно
            <> - не рвано
         "программа" - значение фильтра
        ],
        "and", - тип соединения условий фильтра: and/or
        ["category", "startswith", "категория"]]

Справочники

Справочник Наименование справочника в API
1 3D-модели рабочих центров ReferenceBookOfThreeDModel
2 Анализ циклов ReferenceBookOfCycleAnalize
3 Бригады ReferenceBookOfBrigade
4 Группы рабочих центров ReferenceBookOfGroupOfWorkingCenters
5 Диапазоны значений ValueRange
6 Должности ReferenceBookOfPositions
7 Имена смен ShiftName
8 Метатеги УП ReferenceBookOfControlProgramTag
9 Недопроизводство UnderproductionReason
10 Обработки ReferenceBookOfControlProgramProcessingType
11 Отклонения ReferenceBookReasonsOfOvertime
12 Приостановки/Пропуски OperationRunSuspendReason
13 Простои ReferenceBookReasonsOfDowntime
15 Типы изделий ReferenceBookOfProductType
16 Типы причин простоя ReferenceBookOfDowntimeReasonType
17 Типы программ ReferenceBookOfControlProgramType
18 Шаблоны расписаний ScheduleTemplate
19 Шаблоны сообщений MessageTemplate

Другие объекты системы:

Наименование Наименование справочника в API
1 Изделия (ReferenceBookOfProducts)
2 УП (ReferenceBookOfControlPrograms)
3 Подпрограммы (ReferenceBookOfSubprograms)
4 Группа тикета (TicketGroup)
5 Источник тикета (TicketSource)
6 Тип тикета (TicketType)
7 Фильтр тикета (TicketFilter)
8 Оповещение тикета (TicketNotification)

Работа со структурой предприятия

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

 api/dpaEnterpriseStrusture/getEnterprise/{id}    api/ManageEnterpriseStructure/getEnterprise/{id} 

Получение информации о конкретном цехе

  api/dpaEnterpriseStrusture/getSite/{id}    api/ManageEnterpriseStructure/getSite/{id}

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

 api/dpaEnterpriseStrusture/getDepartment/{id}    api/ManageEnterpriseStructure/getDepartment/{id}>

Получение информации о конкретном рабочем центре

 api/dpaEnterpriseStrusture/getEquipment/{id}    api/ManageEnterpriseStructure/getEquipment/{id}

Создание предприятия

 api/dpaEnterpriseStrusture/create    api/ManageEnterpriseStructure/create

POST {         
        "name": "Предприятие", - наименование         
        "description": "Описание строкой", - описание     
           } 

Cохранение информации о предприятии

 api/dpaEnterpriseStrusture/saveEnterprise    api/ManageEnterpriseStructure/saveEnterprise 

POST {         
        "id": 348, - идентификатор         
        "name": "Предприятие", - наименование         
        "description": "Описание строкой", - описание                  // Настройки безопасности общие для всех структурных единиц: Предприятия/Цех/Подразделение/Рабочий центр - поэтому в остальных запросах описание пропущено         
        "inherit": false, - признак наследуемости настроек безопасности (не используется для предприятия)         
        "groupIds": [], - идентификаторы групп безопасности, которым будет доступен просмотр структурной единицы (в случае, если настройки не наследуются)                                         
        "availableToAll": true, - признак доступности всем группам безопасности (в случае, если настройки не наследуются)     
     } 

Создание цеха

   api/dpaEnterpriseStrusture/createSite    api/ManageEnterpriseStructure/createSite 

POST {
        "name": "Цех №1", - наименование         
        "description": "Описание строкой", - описание         
        "enterpriseId": 123456 - идентификатор родительского предприятия     
     } 

Сохранение информации о цехе

api/dpaEnterpriseStrusture/saveSite    api/ManageEnterpriseStructure/saveSite

POST {         
        "id": 21, - идентификатор         
        "name": "Цех №1", - наименование         
        "description": "Описание строкой", - описание                  
        "inherit": true,         
        "groupIds": [],         
        "availableToAll": false,         
     }

Создание подразделения

 api/dpaEnterpriseStrusture/createDepartment    api/ManageEnterpriseStructure/createDepartment 

POST {         
        "name": "Подразделение №1", - наименование         
        "description": "Описание строкой", - описание         
        "siteId": 123456 - идентификатор родительского цеха         
        "ownerDepartmentId": 123456 - идентификатор родительского подразделения (не указывается если родителем является цех)     
      } 

Сохранение информации о подразделении

 api/dpaEnterpriseStrusture/saveDepartment    api/ManageEnterpriseStructure/saveDepartment

POST {         
        "id": 22, - идентификатор         
        "name": "Подразделение Alpha", - наименование         
        "description": "описание", - описание         
        "threeDModelId": 50253885, - идентификатор привязанной 3D-модели подразделения                  
        "inherit": true,         
        "groupIds": [],         
        "availableToAll": false,     
     } 

Cоздание РЦ

 api/dpaEnterpriseStrusture/createEquipment    api/ManageEnterpriseStructure/createEquipment

POST {         
        "departmentId": 56539853, - идентификатор родительского подразделения         
        "name": "Alpha 700-IST-1", - наименование         
        "description": "описание", - описание         
        "equipmentGroupIds": [], - идентификаторы групп РЦ, в которые входи РЦ         
        "driverIdentifier": "68f6e95d-fa95-4dd6-a670-3f4181a693ab", - идентификатор драйвера, к которому привязан РЦ         
        "serverId": 23, - идентификатор сервера DPA, к которому привязан РЦ     
     } 

Cохранение информации о РЦ

 api/dpaEnterpriseStrusture/saveEquipment    api/ManageEnterpriseStructure/saveEquipment

POST {
        "id": 26, - идентификатор
        "name": "Alpha 700-IST-1", - наименование
        "model": "модель рабочего центра", - наименование модели
        "inventoryNumber": "ITX-111", - инвентарный номер
        "description": "", - описание
        "equipmentGroupIds": [], - идентификаторы групп РЦ, в которые входи РЦ
        "driverIdentifier": "68f6e95d-fa95-4dd6-a670-3f4181a693ab", - идентификатор драйвера, к которому привязан РЦ
        "serverId": 23, - идентификатор сервера DPA, к которому привязан РЦ
        "mainChannel": 0, - номер основного канала драйвера
        "channelInfoList": [ - информация о каналах драйвера
           

{                 "channelNumber": 0, - номер канала                 "isUsedInSummaryState": true - учавствует ли канал в формировании состояния РЦ             }
,
           

{                 "channelNumber": 1,                 "isUsedInSummaryState": false             }
        ],
        
        "releaseCountingType": 0, - тип подсчета выпуска (0-по нормам УП; 1-по счётчику; 2-без выпуска)
        "counterIncrementType": 0, - тип инкрементации счетчика (0-инкрементация на разницу значений счетчика; 1-инкрементация на единицу)
        "releaseDiscreteness": 1, - дискретность выпуска по счётчику
        "normativeReleaseDiscreteness": 1, - дискретность выпуска по норме
        "releaseQualityMark": 0, -  отметка качества(0-условно-годные; 1-годные; 2-брак)
        "masterMustComfirmIncompleteJobClose": true, - Мастер должен подтверждать закрытие задания с недопроизводством или перепроизводством
        "masterMustComfirmDisorderedJobStart": true, - Мастер должен подтверждать запуск задания не по порядку и пропуск задания
        "allowMultipleTasksSimultaneously": true, - разрешить запуск нескольких заданий одновременно
        "prohibitedJobStartWhenAnotherJobIsSuspended": false, - Запретить запуск задания, если другое задание стоит на паузе
        "allowMultiplePersonalShifts": true, - Разрешить открытие больше одной смены оператора одновременно
        "useMachineStatisticsOutput": true, - Использовать выпуск по по машинным данным
        
        "parseNcDataType": 1, - тип определения УП (0-отключено; 1-по имени УП; 2-по метатегам УП)
        
        "threeDModelId": 25, - идентификатор 3D-модели        

        "inherit": false,
        "groupIds": [ 5 ],
        "availableToAll": false,
    }

Шаблоны расписаний

[POST] /api/schedule/saveScheduleTemplateRecord 

пример недельного шаблона расписания:

{
  "id": -1, - идентификатор шаблона (-1 для создания нового)
  "name": "наименование шаблона расписания", - наименование
  "templateType": 2, - тип шаблона (1-дневной; 2-недельный)
  "intervals": [ - коллекция интервалов, описывающих расписание
   

{ "shiftId": 641, - идентификатор имени смены       
  "start": "00.00:00:00", - время начала интервала (смещение от начала недели, т.е. от понедельника 00:00)       
  "end": "00.04:10:00" - время окончания интервала       // время начала и окончания интервала передается в разрезе дней. В случае если смена переходит из одного дня в другой, необходимо передать два интервала - для первого дня и для второго.       // интервалы времени должны передаваться в хронологическом порядке.     }
,
    { "shiftId": 642, "start": "00.04:10:00", "end": "00.09:20:00" },
    { "shiftId": 641, "start": "00.09:20:00", "end": "01.00:00:00" },
    { "shiftId": 641, "start": "01.00:00:00", "end": "01.07:30:00" },
    { "shiftId": 643, "start": "01.07:30:00", "end": "01.13:40:00" },
    { "shiftId": 641, "start": "01.13:40:00", "end": "02.00:00:00" },
    { "shiftId": 641, "start": "02.00:00:00", "end": "02.04:30:00" },
    { "shiftId": 644, "start": "02.04:30:00", "end": "02.11:50:00" },
    { "shiftId": 641, "start": "02.11:50:00", "end": "02.14:20:00" },
    { "shiftId": 53144555, "start": "02.14:20:00", "end": "02.21:10:00" },
    { "shiftId": 641, "start": "02.21:10:00", "end": "03.00:00:00" },
    { "shiftId": 641, "start": "03.00:00:00", "end": "04.00:00:00" },
    { "shiftId": 641, "start": "04.00:00:00", "end": "05.00:00:00" },
    { "shiftId": 641, "start": "05.00:00:00", "end": "06.00:00:00" },
    { "shiftId": 641, "start": "06.00:00:00", "end": "07.00:00:00" }
  ]
}

Отвязка структурной единицы от родительского расписания:

 
[POST] api/schedule/detachScheduleFromParent/{scheduleOwnerType}/{scheduleOwnerId} 
где:
    scheduleOwnerType - тип структурной единицы открепляемой от родительского расписания (1-РЦ; 2-подразделение; 3-цех; 5-предприятие)
    scheduleOwnerId - идентификатор структурной единицы 

при отвязке от родительского расписания для структурной единицы содается собственное расписание и далее работа производится уже с ним

Приявязка структурной единицы к родительскому расписанию:

 [POST] api/schedule/attachScheduleToParent/{scheduleOwnerType}/{scheduleOwnerId}
где:
    scheduleOwnerType - тип структурной единицы прикрепляемой к родительскому расписанию (1-РЦ; 2-подразделение; 3-цех; 5-предприятие)
    scheduleOwnerId - идентификатор структурной единицы 

при привязке к родительскому расписанию происходит удаление собственного расписания работы структурной единицы

Применения шаблона расписания к расписанию структурной единицы:

 [POST] api/schedule/applyScheduleTemplateToSchedule/{scheduleOwnerType}/{scheduleOwnerId}/{scheduleTemplateId}

где:

   scheduleOwnerType - тип структурной единицы (1-РЦ; 2-подразделение; 3-цех; 5-предприятие)
   scheduleOwnerId - идентификатор структурной единицы
   scheduleTemplateId - идентификатор шаблона расписания

тело метода:

{   
       "start": "2022-07-03T19:00:00.000Z", - начало периода, на который применяется шаблон расписания   
       "end": "2022-07-10T19:00:00.000Z" - окончание периода, на который применяется шаблон расписания } 

Получение информации по простоям

Журнал простоев

    [POST] http://dpadev/api/journals/getJournalDatas/DowntimeReason
    Тело:
    {
      "dateTimeFrom": "2022-07-10T21:00:00.000Z", - время начала периода
      "dateTimeUntil": "2022-07-11T20:59:59.999Z", - время окончания периода
      "itemIds": [1, 2, 3], - список идентификаторов оборудования
      "gridOptions": { - опции спискового отображения (описание есть в вопрос №1)
        "requireTotalCount": true,
        "skip": 0,
        "take": 20,
        "sort": [
         

{             "selector": "startDate",             "desc": true           }
        ]
      }
    }

Возвращаемая структура данных:

    [
       
{             
        "downtimeInfo": "Delta  UQ-3",             
        "startDate": "2022-07-11T08:13:49.1990938+00:00", - начало периода причины простоя             
        "endDate": "2022-07-11T08:13:49.6935685+00:00", - окончание периода причины простоя             
        "status": 2, - статус простоя (1-необработанный;2-обработанный)             
        "reason": "Перерыв между сменами", - наименование причины простоя             
        "timeStamp": "2022-07-11T11:13:52.477789+03:00", - время последней классификации периода простоя             
        "operatorComment": null, - комментарий причины простоя             
        "user": "Пользоватль 123", - имя пользователя классифицировашего период простоя             
        "id": 356166430, - идентификатор периода причины простоя             
        "createdOn": "2022-07-11T08:13:52.477789+03:00", - время создания периода причины простоя             
        "createdBy": 1 - идентификатор пользователя создавшего период причины простоя         }
    ]

Работа с пользователями

Добавление/удаление пользователей в/из группы

 [POST] api/securityManagment/subjectInheritance/{userId}
    
    где: userId - идентификатор пользователя 

тело:

  

{         "added": [1, 2, 3], - список идентификаторов добавляемых пользователю групп         
          "removed": [4, 5, 6] - список идентификаторов удаляемых у пользователя групп     } 

Получение списка пользователей:

        
[POST] api/security/userRecords
тело: 
       
опции спискового отображения:
{
            
    "sort": null,             
    "requireTotalCount": true,             
    "searchOperation": "contains",             
    "searchValue": null,             
    "skip": 0,             
    "take": 20,         }

Возращаемая структура данных:

       {
            totalCount: 10,
            data:[
               

{          
          "personnelNumber": "1378698466", - табельный номер                     
          "positionName": null, - наименование занимаемой должности                     
          "positionId": null, - идентификатор занимаемой должности                     
          "isSystemUser": false, - признак того, что пользователь системный                     
          "surname": "Виноградов", - фамилия                     
          "name": "Михаил", - имя                     
          "patronymic": "Сергеевич", - отчество                     
          "language": "ru-RU", - текущая локализация                     
          "blocked": false, - признак заблокированности                     
          "id": 2689, - идентификатор пользователя                     
          "displayName": "Виноградов М.С." - отображаемое имя                 }

Получение списка групп:

 [POST] api/security/groupRecords 

{ - опции спискового отображения             
          "sort": null,             
          "requireTotalCount": true,             
          "searchOperation": "contains",             
          "searchValue": null,             
          "skip": 0,             
          "take": 20,         } 

Возвращаемая структура данных:

        {
            totalCount: 30,
            data:[
               

{                     
           "name": "Операторы", - наименование                     
           "description": null, - описание                     
           "id": 2, - идентификатор                     
           "displayName": "Операторы" - отображаемое наименование                 } 

Работа с заданиями

Получение списка заданий:

 [POST] api/jobs/getJobDatas
{  
    "requireTotalCount": true,
    "skip": 0,
    "take": 20,
    "sort": [ { "selector": "startDate", "desc": true } ]
} 

Результат:

{
            "id": 9347, - идентификатор
            "equipmentId": 899, - идентификатор оборудования, на которое запланировано задание
            "equipment": "WC2", - наименование оборудования, на которое запланировано задание
            "isMaintenance": true, - признак того, что задание является ТОиР
            "productionType": 5, - тип задания (1-производство, 2-Наладка, 3-Внедрение, 4-Производство с наладкой, 5-ТОиР)
            "order": null, - Название задания (в версии 5.7 не используется для ТОиР)
            "productName": null, - наименование производимого изделия (для заданий типа 1-4)
            "productVersion": null, - номер версии производимого изделия (для заданий типа 1-4)
            "plannedCount": null, - плановое количество (для заданий типа 1,3,4)
            "actualCount": null, - фактическое количество (для заданий типа 1,3,4)
            "rejectedCount": null, - количество брака (для заданий типа 1,3,4)
            "technologyVersion": null, - версия технологии, по которой производится изделие (для заданий типа 1-4)
            "stage": null, - наименование этапа технологии  (для заданий типа 1-4)
            "plannedStart": "2022-07-19T12:20:00+05:00", - плановое время начала
            "plannedEnd": "2022-07-19T13:20:00+05:00", - плановое время окончания
            "actualStart": null, - фактическое время начала
            "actualEnd": null, - фактическое время окончания
            "status": 1, - первичный статус задания (0-создани, 1-запланировано, 2-начато, 3-завершено)
            "secondaryStatus": 0, - вторичный статус задания (0-нет, 1-пауза, 2-пропущено, 3- ---, 4-пропущено и скрыто)
            "isImported": false - признак того, что задание получено через импорт
        } 

Создание задания на производство

[POST] api/jobs/createAndAssign
            {
                "order": "job/order name", - Название задания
                "lot": null, - партия(не используется)
                "productVersionId": 1424, - идентификатор версии производимого изделия (может не указываться)
                "technologyVersionId": 1455, - идентификатор версии технологии, по которой производится изделие (может не указываться)
                "technologyStageId": 1456, - идентификатор этапа технологии, по которому производится изделие (указываться совместно с technologyVersionId)
                "count": "111", - плановое количество
                "startDate": "2022-07-19T08:16:00.000Z", - плановое время начала (указывается совместно с временем окончания и оборудованием)
                "endDate": "2022-07-19T18:03:00.000Z", - плановое время окончания (указывается совместно с временем начала и оборудованием)
                "productionType": 1, - тип задания (1-производство, 2-Наладка, 3-Внедрение, 4-Производство с наладкой)
                "comment": "some comment here", - комментарий
                "equipmentId": 898 - идентификатор оборудования, на которое запланировано задание (указывается совместно с временем начала и окончания)
            }

Редактировоание задания на производство:

[POST] api/jobs/updateAndAssign/{идентификатор_задания}

            {
                "order": "job/order name", - Название задания
                "lot": null, - партия(не используется)
                "productVersionId": 1424, - идентификатор версии производимого изделия (может не указываться)
                "technologyVersionId": 1455, - идентификатор версии технологии, по которой производится изделие (может не указываться)
                "technologyStageId": 1456, - идентификатор этапа технологии, по которому производится изделие (указывается совместно с technologyVersionId)
                "count": "111", - плановое количество
                "startDate": "2022-07-19T08:16:00.000Z", - плановое время начала (указывается совместно с временем окончания и оборудованием)
                "endDate": "2022-07-19T18:03:00.000Z", - плановое время окончания (указывается совместно с временем начала и оборудованием)
                "productionType": 1, - тип задания (1-производство, 2-Наладка, 3-Внедрение, 4-Производство с наладкой)
                "comment": "some comment here", - комментарий
                "equipmentId": 898 - идентификатор оборудования, на которое запланировано задание (указывается совместно с временем начала и окончания)
            }

Создание и редактирование задания ТОиР:

[POST] api/jobs/saveMaintenanceJob

            {
                "id": 0, - идентификатор задания (0-при создании)
                "equipmentId": 899, - идентификатор оборудования, на которое запланировано задание
                "startTime": "2022-07-19T07:20:00.000Z", - плановое время начала
                "endTime": "2022-07-19T08:20:00.000Z", - плановое время окончания
                "type": 1, - тип ТОиР (1-плановый, 2-внеплановый, 3-авария)
                "cause": "reason", - причина(текст)
                "mode": 2, - всегда=2
                "comment": "comment", - комментарий
            }

Работа с технологиями

Получение списка технологий

[POST] api/technology/getGridRecords

		{ - опции спискового отображения 
			"sort": null,
			"requireTotalCount": true,
			"searchOperation": "contains",
			"searchValue": null,
			"skip": 0,
			"take": 20
		}

Результат:

{
			"rootId": "1454_1455", - ключ
			"displayName": "Подшипник 58.6*10/C12 от 01.04.2021 #1", - наименование версии технологии
			"productVersionId": 1424, - идентификатор вкрсии изделия
			"productVersionName": "Подшипник 58.6*10/C12 #1", - наименование версии изделия
			"technology": { - технология
				"key": {
					"id": 1454, - идентификатор технологии
					"typeId": 326 - идентификатор типа объекта "технология"
				},
				"id": 1454, - идентификатор технологии
				"name": "Подшипник 58.6*10/C12 от 01.04.2021", - наименование технологии
				"description": "", - описание
				"authorName": "SystemUserName", - имя пользователя, создавшего технологию
				"productVersionName": "Подшипник 58.6*10/C12 #1",
			},
			"technologyVersion": { - версия технологии
				"key": { - ключ
					"id": 1455, - идентификатор версии технологии
					"typeId": 333 - идентификатор типа объекта "версия технология"
				},
				"id": 1455,
				"name": "Подшипник 58.6*10/C12 от 01.04.2021 #1", - наименование версии технологии
				"description": null, - описание
				"authorName": "SystemUserName", - имя пользователя, создавшего версию технологии
				"lifeCycleState": 1, - состояние (0-новая, 1-действующая, 2-недействительная, 3-ожидает проверки, 4-редактируемая, 5-устаревшая)
				"stateChangeAuthorName": "SystemUserName", - имя пользователя, установившего состояние
				"activeFrom": "2021-04-01T05:00:00+05:00", - начало периода активности
				"activeTo": "2030-01-01T05:00:00+05:00", - окончание периода активности
			},
			"displayAuthorName": "SystemUserName", - имя пользователя, создавшего версию технологии
		}

Создание технологий:

Для созданной технологии сразу создается версия технологии. Версия технологии в свою очередь заполняется демонстрационными данными (этап->операции).

[POST] api/technology/createTechnology

		{
			"name": "Technology Name", - наименование технологии
			"description": "description here", - описание
			"productVersionId": 1424 - идентификатор версии производимого изделия
		}

Результат: идентификатор технологии

Редактирование технологии:

[POST] api/technology/updateTechnology

	{
			"key": { - ключ
				"id": 9378, - идентификатор технологии
				"typeId": 326 - идентификатор типа объекта "технология"
			},
			"description": "description here" - описание
		}

Результат: идентификатор технологии

Добавление версии технологии:

[POST] api/technology/createTechnologyVersion/{id},{typeId}

Результат:

		{ - ключ
			"id": 9442, - идентификатор версии технологии
			"typeId": 333 - идентификатор типа объекта "версия технология"
		}

Редактирование версии технологии:

[POST] api/technology/updateTechnologyVersion

		{
			"key": { - ключ
				"id": 9442,
				"typeId": 333,
			},
			"versionDescription": "description here", - описание
			"activeFrom": "2022-07-19T00:00:00+05:00", - начало периода активности
			"activeTo": "2072-07-19T00:00:00+05:00", - окончание периода активности
			"lifeCycleState": 0, - состояние (0-новая, 1-действующая, 2-недействительная, 3-ожидает проверки, 4-редактируемая, 5-устаревшая)
		}

Cоздание этапа версии технологии:

 
[POST] api/technology/createStage/{id},{typeId}  
// {id},{typeId} - идентификатор версии технологии и объекта "версия технологии"


{
	"name": "stage name here" - наименование
}

Редактирование этапа технологии:

[PUT] api/technology/updateStage
тело:

{
	"key": { - ключ этапа технологии
		"id": 9443, - идентификатор этапа технологии
		"typeId": 331 - идентификатор типа объекта "этап технологии"
	},
	"name": "Stage name here", - наименование этапа
	"description": "description here" - описание
}

Удаление этапа технологии:

 [DELETE] api/technology/removeStage/{id},{typeId} 

Получение списка привязанных к этапу РЦ/групп РЦ:

[GET] api/technology/getStageEquipments/{id},{typeId}
{id},{typeId} - идентификатор этапа и объекта "этап" 

Результат массив объектов, привязанных рабочих центров и групп рабочих центров, вида:

{ - для рабочего центра
	"department": "Предприятие\\Производственная площадка №1\\Подразделение №1", - подразделение
	"group": "", - наименование групп РЦ, в которые входит оборудование
	"key": { - ключ привязки РЦ
		"id": 9564, - идентификатор привязки РЦ к этапу технологии
		"typeId": 332 - идентификатор типа объекта "привязка РЦ к этапу технологии"
	},
	"objectKey": { - ключ РЦ
		"id": 899, - идентификатор РЦ
		"typeId": 150 - идентификатор типа объекта "РЦ"
	},
	"name": "WC2" - наименование РЦ
},
{ - для группы РЦ
	"equipments": [ - список РЦ входящих в группу
		{
			"department": "Предприятие\\Производственная площадка №1\\Подразделение №1",
			"group": "new group",
			"key": null,
			"objectKey": {
				"id": 898,
				"typeId": 150
			},
			"name": "WC1"
		},
		{
			"department": "Предприятие\\Производственная площадка №1\\Подразделение №1",
			"group": "new group",
			"key": null,
			"objectKey": {
				"id": 899,
				"typeId": 150
			},
			"name": "WC2"
		}
	],
	"key": { - ключ привязки РЦ/группы РЦ
		"id": 9602,
		"typeId": 332
	},
	"objectKey": { - ключ группы РЦ
		"id": 9601,
		"typeId": 255
	},
	"name": "new group" - наименование группы оборудования
}

Добавление рабочего центра к этапу технологии:

[PUT] api/technology/addStageEquipment/{id},{typeId}
{id},{typeId} - идентификатор этапа и объекта "этап"

тело: [898,899] - список идентификаторов РЦ результат аналогичен результату для получения списка привязанных к этапу РЦ/групп РЦ

Добавление группы рабочих центров к этапу технологии:

 [PUT] /api/technology/addStageEquipmentGroup/{id},{typeId}
{id},{typeId} - идентификатор этапа и объекта "этап"

тело: 9601 - идентификатор группы РЦ результат аналогичен результату для получения списка привязанных к этапу РЦ/групп РЦ

Удаление РЦ из этапа технологии:

[DELETE] api/technology/removeEquipmentFromStage/{id},{typeId}
{id},{typeId} - идентификатор привязки РЦ/группы РЦ к этапу и объекта "привязка РЦ/группа РЦ к этапу"


{ - ключ привязки РЦ
	"id": 9563, - идентификатор привязки РЦ к этапу технологии
	"typeId": 332 - идентификатор типа объекта "привязка РЦ к этапу технологии"
}

Добавление операции в этап технологии:

 [POST] api/technology/addOperation/{id},{typeId}
{id},{typeId} - идентификатор этапа и объекта "этап"

{
	"name": "operation name here", - наименование операции
	"category": 0 - категория операции(0-инструкция/текст, 1-работа по УП, 2-контроль качества, 3-ввод данных)
}
 

Результат:

{
	"id": 9572, - идентификатор операции
	"key": { - ключ операции
		"id": 9572, - идентификатор операции
		"typeId": 336 - идентификатор типа объекта "технологическая операция"
	},
	"name": "operation name here", - наименование операции
	"description": null, - описание
	"category": 0, - категория операции(0-инструкция/текст, 1-работа по УП, 2-контроль качества, 3-ввод данных)
	"type": 4, - тип операции (0-подготовка партии, 1-подготовка штуки, 2-основная, 3-завершение штука, 5-завершение партия)
	"typeString": "Завершающая - партия", - строковое представление типа операции
	"duration": "00:00:00", - длительность
	"durationSeconds": 0, - длительность в секундах
	"durationHumanized": "0 сек.", - текстовое представление длительности
	"order": 7, - порядковый номер операции в этапе
	"stageKey": { - ключ родительского этапа технологии
		"id": 9443,
		"typeId": 331
	},
	"inputFields": null, - поля ввода(для операции "ввод данных")
	"text": null - текст (для операции инструкция/текст)
}

Редактирование операции:

[PUT] api/technology/updateOperation


{
	"id": 9448, - идентификатор операции
	"key": { - ключ операции
		"id": 9448,
		"typeId": 336
	},
	"name": "operation name here", - наименование
	"description": "operation description here", - описание
	"category": 0, - категория(0-инструкция/текст, 1-работа по УП, 2-контроль качества, 3-ввод данных)
	"type": 3, - тип (0-подготовка партии, 1-подготовка штуки, 2-основная, 3-завершение штука, 5-завершение партия)
	"duration": "00:12:34", - длительность
	"stageKey": { - ключ этапа
		"id": 9443,
		"typeId": 331
	},
	"inputFields": [ - поля ввода для категории 3
		{ - поле ввода типа индикатор (значение берется из индикатора)
			"name": "measurement 1", - наименование
			"fromIndicator": true, - признак того, что значение из индикатора
			"editable": true, - признак возможности ручного редактирования
			"equipmentIndicators": [ - список привязки индикаторов для каждого РЦ этапа
				{
					"equipmentId": 8708, - идентификатор РЦ
					"indicatorId": 8749 - идентификатор индикатора
				}
			]
		},
		{ - поле ввода (ручной ввод)
			"name": "measurement 2", - наименование
			"fromIndicator": false, - признак того, что значение из индикатора
		}
	], 
	"text": "some text here", - ткст для категории 0
}

результат аналогичен результату при добавлении операции

Назначение УП для РЦ по операции категории 1-работа по УП:

[POST] api/technology/setNcProgramForOperation/{id},{typeId}/{programVersionId}
{id},{typeId} - идентификатор операции и объекта "технологическая операция"
{programVersionId} - идентификатор версии УП

[ - список ключей привязок РЦ/групп РЦ к этапу, на которые применяется выбранная УП
	{ - ключ
		"id": 9626,
		"typeId": 332
	},
	{ - ключ
		"id": 9569,
		"typeId": 332
	}
]

Результат:

[ - список привязок РЦ/группа РЦ к версиям УП
	{
		"key": { - ключ привязки РЦ/группы РЦ к этапу
			"id": 9626,
			"typeId": 332
		},
		"equipmentId": null, - идентификатор оборудования (для РЦ)
		"isGroup": true, - признак того, что это группа РЦ
		"name": "new group", - наименование группы РЦ (для группы РЦ)
		"department": "", - подразделение (для РЦ)
		"group": "", - группы РЦ, в которые входит РЦ (для РЦ)
		"programKey": { - ключ версии УП
			"id": 1429,
			"typeId": 245
		},
		"programName": "Подшипник 58.6*10/C12",
		"versionNumber": 1,
		"equipments": [
			{
				"department": "Предприятие\\Производственная площадка №1\\Подразделение №1",
				"group": "new group",
				"key": null,
				"objectKey": {
					"id": 898,
					"typeId": 150
				},
				"name": "WC1"
			},
			{
				"department": "Предприятие\\Производственная площадка №1\\Подразделение №1",
				"group": "new group",
				"key": null,
				"objectKey": {
					"id": 899,
					"typeId": 150
				},
				"name": "WC2"
			}
		]
	},
	{
		"key": {
			"id": 9569,
			"typeId": 332
		},
		"equipmentId": 8708,
		"isGroup": false,
		"name": "MMC Emulator",
		"department": "Предприятие\\Производственная площадка №1\\Подразделение №1",
		"group": "group 2",
		"programKey": {
			"id": 1429,
			"typeId": 245
		},
		"programName": "Подшипник 58.6*10/C12",
		"versionNumber": 1,
		"equipments": null
	}
]

Cмена порядка операции в этапе:

[PUT] api/technology/reorderOperation/{id},{typeId}
{id},{typeId} - идентификатор операции и объекта "технологическая операция"
тело: 2 - новый порядковый номер операции в этапе

Удаление операции:

 [DELETE] api/technology/removeOperation/{id},{typeId}
{id},{typeId} - идентификатор операции и объекта "технологическая операция" 

результат:

{ - ключ операции
	"id": 9448,
	"typeId": 336
}

Добавление медиа-файла к версии технологии/операции:

 [POST] api/mediaFile/addFile/{id},{typeId}
{id} - идентификатор версии технологии или операции
{typeId} - идентификатор соответствующего типа версии технологии или операции
в form прикрепляется тело файла 

Работа с управляющими программами

создание/редактирование в версию УП через метод:

[POST] /api/ReferenceBook/setVersionOfControlProgramEdit
    тело запроса: 

{
        "Id": 1, - идентификатор версии
        "OwnerId": 2, - идентификатор УП
        "VersionNumber": 3, - номер версии
        "VersionStatus": 4, - статус версии (0-неактивна; 1-активна)
        "VersionDescription": "string", - описание версии
        "NumberOfProducts": 5, - количество выпуска
        "FileName": "fileName", - имя файла
        "FileFormat": 0, - формат файла (0-текст; 1-текст utf-8; 2-текст ascii; 3-текст win1-251; 4-текст cp866; 5-текст kio8r; 6-mazatrol; 7-текст utf-16; 8-текст utf-32; 9-dornier xml)
        "LinkedParameterSets": [6, 7], - массив идентификаторов наборов параметров
        "LinkedSubprograms": [ - список привязанных подпрограмм
            {
                "SubprogramId": 8, - идентификатор подпрограммы
                "SubprogramName": "name", - имя подпрограммы
                "LinkedParametersSets": [9, 10] - массив идентификаторов наборов параметров
            }
        ],
    }