Описание API

Материал из DPA
Перейти к навигации Перейти к поиску

Наполнение справочников

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

{
  "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
       тело: 
      

{ - опции спискового отображения (описание есть в вопрос №1) "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 прикрепляется тело файла