{"action":"created","issue":{"url":"https://api.github.com/repos/e-government-ua/i/issues/454","labels_url":"https://api.github.com/repos/e-government-ua/i/issues/454/labels{/name}","comments_url":"https://api.github.com/repos/e-government-ua/i/issues/454/comments","events_url":"https://api.github.com/repos/e-government-ua/i/issues/454/events","html_url":"https://github.com/e-government-ua/i/issues/454","id":91479246,"number":454,"title":"Создать сервисы \"электронной очереди\": авто-генерации слотов, в соответствии с расписанием потока и отчистки слотов за указанный период","user":{"login":"bvv4ik","id":4208821,"avatar_url":"https://avatars.githubusercontent.com/u/4208821?v=3","gravatar_id":"","url":"https://api.github.com/users/bvv4ik","html_url":"https://github.com/bvv4ik","followers_url":"https://api.github.com/users/bvv4ik/followers","following_url":"https://api.github.com/users/bvv4ik/following{/other_user}","gists_url":"https://api.github.com/users/bvv4ik/gists{/gist_id}","starred_url":"https://api.github.com/users/bvv4ik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bvv4ik/subscriptions","organizations_url":"https://api.github.com/users/bvv4ik/orgs","repos_url":"https://api.github.com/users/bvv4ik/repos","events_url":"https://api.github.com/users/bvv4ik/events{/privacy}","received_events_url":"https://api.github.com/users/bvv4ik/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/e-government-ua/i/labels/hi%20priority","name":"hi priority","color":"e11d21"},{"url":"https://api.github.com/repos/e-government-ua/i/labels/test","name":"test","color":"5319e7"}],"state":"open","locked":false,"assignee":{"login":"brunneng","id":1325616,"avatar_url":"https://avatars.githubusercontent.com/u/1325616?v=3","gravatar_id":"","url":"https://api.github.com/users/brunneng","html_url":"https://github.com/brunneng","followers_url":"https://api.github.com/users/brunneng/followers","following_url":"https://api.github.com/users/brunneng/following{/other_user}","gists_url":"https://api.github.com/users/brunneng/gists{/gist_id}","starred_url":"https://api.github.com/users/brunneng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brunneng/subscriptions","organizations_url":"https://api.github.com/users/brunneng/orgs","repos_url":"https://api.github.com/users/brunneng/repos","events_url":"https://api.github.com/users/brunneng/events{/privacy}","received_events_url":"https://api.github.com/users/brunneng/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/e-government-ua/i/milestones/5","html_url":"https://github.com/e-government-ua/i/milestones/BackEnd-REST-Activiti_Java","labels_url":"https://api.github.com/repos/e-government-ua/i/milestones/5/labels","id":1063352,"number":5,"title":"BackEnd-REST-Activiti_Java","description":"Разработка кастомных общих API/REST, которые вначале позволят реализовывать  нужные нам сервисы по авторизации(и не только), а потом станут общей-единой точкой входа, включающую текущие REST Activiti","creator":{"login":"bvv4ik","id":4208821,"avatar_url":"https://avatars.githubusercontent.com/u/4208821?v=3","gravatar_id":"","url":"https://api.github.com/users/bvv4ik","html_url":"https://github.com/bvv4ik","followers_url":"https://api.github.com/users/bvv4ik/followers","following_url":"https://api.github.com/users/bvv4ik/following{/other_user}","gists_url":"https://api.github.com/users/bvv4ik/gists{/gist_id}","starred_url":"https://api.github.com/users/bvv4ik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bvv4ik/subscriptions","organizations_url":"https://api.github.com/users/bvv4ik/orgs","repos_url":"https://api.github.com/users/bvv4ik/repos","events_url":"https://api.github.com/users/bvv4ik/events{/privacy}","received_events_url":"https://api.github.com/users/bvv4ik/received_events","type":"User","site_admin":false},"open_issues":24,"closed_issues":58,"state":"open","created_at":"2015-04-11T19:27:45Z","updated_at":"2015-07-14T19:06:13Z","due_on":null,"closed_at":null},"comments":3,"created_at":"2015-06-27T14:53:05Z","updated_at":"2015-07-14T20:34:44Z","closed_at":null,"body":"1) Генерация слотов\r\n1.1) Создать сервис генерации buildFlowSlots\r\nв параметрами:\r\nnID_Flow_ServiceData - номер-ИД потока по данным сервиса (по которому генерируется слоты)\r\nsDateStart (опциональный) - дата \"начиная с такого-то момента времени\", в формате \"2015-06-28 12:12:56.001\"\r\nsDateStop (опциональный) - дата \"заканчивая к такому-то моменту времени\", в формате \"2015-07-28 12:12:56.001\"\r\n\r\n1.2) Создать класс-обработчик: \"org.wf.dp.dniprorada.base.service.flow.propertyHandler.DefaultFlowSlotScheduler\"\r\nВызывать его тогда, когда в сервисе, по параметру nID_Flow_ServiceData - выходим на ссылку в этого класса и пути (по текущим данным мы выйдем со значением nID_Flow_ServiceData=1)\r\nОпределяем это по такой логике:\r\n1.2.1.) этот ИД ищет записи в сущности:\r\n(1.5) FlowProperty (Свойства потока), с полями:\r\nnID (лонг) - номер-ИД (уникальный) //обязательное (автоитеррируемый)\r\nnID_Flow_ServiceData (лонг) - номер-ИД потока данных сервиса //обязательное\r\nnID_FlowPropertyClass (лонг) - ИД-строка класса-обработчика //обязательное\r\nsData (<200 символов) - строка с данными для обработчика //обязательное\r\nгде nID_Flow_ServiceData совпадет!\r\nНа текущий момент в этой таблице есть такая запись (где nID_FlowPropertyClass=1):\r\nnID;nID_FlowPropertyClass;sData;nID_Flow_ServiceData\r\n1;1;Test Property Data;1\r\n1.2.2.) в этой записи есть поле \"nID_FlowPropertyClass\", у котором значение=1, соответственно ищем в сущности:\r\n(1.6) FlowPropertyClass (Класс-свойство потока), с полями:\r\nnID (лонг) - номер-ИД (уникальный) //обязательное (автоитеррируемый)\r\nsName (<100 символов) - строка названия //обязательное\r\nsPath (<100 символов) - строка пакет.класс с обработчиком //обязательное\r\nзаписи с этим ИД, и т.к. в таблице такая запись есть:\r\nnID;sName;sPath\r\n1;Shedule_MREO;org.wf\r\nто получаем по ней:\r\nsName=Shedule_MREO;org.wf и sPath=org.wf\r\n(т.е. выходим на класс \"org.wf.Shedule_MREO\")\r\n\r\n1.3) В классе обработчике принимать параметр sData,\r\nкоторый получается из найденной в п.п.1.1.2. записи сущности FlowProperty\r\n(sData (<200 символов) - строка с данными для обработчика)\r\nВ этом значении описана периодичность расписания, по логике:\r\nhttps://en.wikipedia.org/?title=ISO_8601#Durations\r\nИ также принимать значения полученных параметров sDateStart и sDateStop\r\nЛогика их \"дефолтности\" должна быть в этом классе, через проверку их на null:\r\n- если sDateStart=null - берется текущая дата\r\n- если sDateStop=null - берется sDateAt + 2 месяца\r\n\r\n1.4) В классе обработчике выполнить метод make\r\nкоторый за указанный период(sDateAt-sDateTo), с учетом расписания(sData) и в рамках указанного \"Flow_ServiceData\" - проходится по записям сущности:\r\n(1.7) FlowSlot (слот потока), с полями:\r\nnID (лонг) - номер-ИД (уникальный) //обязательное (автоитеррируемый)\r\nnID_Flow_ServiceData (лонг) - номер-ИД потока данных сервиса //обязательное\r\nsDate (дата со временем) - дата и время //обязательное\r\nsData (<30 символов) - строка данных //необязательное\r\nsDuration (длительность) - строка длительности (например \"PT15M\") //обязательное\r\nВ соответствии с логикой: https://en.wikipedia.org/?title=ISO_8601#Durations\r\nsName (<200 символов) - строка, описания для человека (напр: \"2015-06-06 с 8-00 до 8-30\") //обязательное\r\nА исходя из существующих записей:\r\n- Все не обнаруженные записи - должны быть сгенерированы!\r\n- Все обнаруженные и совпавшие могут быть обновлены только в рамках поля \"sDuration\"  (если оно отличается)\r\n\r\n1.5) В ответ сервис должен вернуть массив созданных записей, в виде JSON-обьекта\r\n\r\n2) Очистка от слотов \r\n2.1) Создать сервис очистки clearFlowSlots\r\nв параметрами:\r\nnID_Flow_ServiceData - номер-ИД потока по данным сервиса (по которому отчищаются слоты)\r\nsDateStart (обязательный) - дата \"начиная с такого-то момента времени\", в формате \"2015-06-28 12:12:56.001\"\r\nsDateStop (обязательный) - дата \"заканчивая к такому-то моменту времени\", в формате \"2015-07-28 12:12:56.001\"\r\nbWithTickets (опциональный, умолчательно false) - булевый, разрешающий удалять в т.ч. занятые тикетами слоты\r\n\r\n2.2) выполнить очистку записей в сущности FlowSlot, за указанный период(sDateStart-sDateStop) и в рамках указанного \"Flow_ServiceData\":\r\nВАЖНО: \r\n- если bWithTickets=false, то \"пропускать\" занятые тикетами слоты (сущность: SubjectTicket), но обязательно выводить их массив в ответе\r\n- если bWithTickets=true, то \"освобождать\"(от тикетов) и удалять занятые тикетами слоты (в самих тикетах обновлять поле SubjectTicket.sDateEdit равным текущей дате.\r\n\r\n2.3) В ответ сервис должен вернуть массив \"удаленных\" и \"с тикетами\" записей слотов, в виде JSON-обьекта\r\n\r\n3) Обязательно описать указанные методы в документации: https://github.com/e-government-ua/i/blob/test/docs/specification.md\r\n\r\n\r\nП.С.: предыдущие задачи по реализации этих сущностей и сервисов к ним:\r\nhttps://github.com/e-government-ua/i/issues/315\r\nhttps://github.com/e-government-ua/i/issues/380"},"comment":{"url":"https://api.github.com/repos/e-government-ua/i/issues/comments/121375380","html_url":"https://github.com/e-government-ua/i/issues/454#issuecomment-121375380","issue_url":"https://api.github.com/repos/e-government-ua/i/issues/454","id":121375380,"user":{"login":"bvv4ik","id":4208821,"avatar_url":"https://avatars.githubusercontent.com/u/4208821?v=3","gravatar_id":"","url":"https://api.github.com/users/bvv4ik","html_url":"https://github.com/bvv4ik","followers_url":"https://api.github.com/users/bvv4ik/followers","following_url":"https://api.github.com/users/bvv4ik/following{/other_user}","gists_url":"https://api.github.com/users/bvv4ik/gists{/gist_id}","starred_url":"https://api.github.com/users/bvv4ik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bvv4ik/subscriptions","organizations_url":"https://api.github.com/users/bvv4ik/orgs","repos_url":"https://api.github.com/users/bvv4ik/repos","events_url":"https://api.github.com/users/bvv4ik/events{/privacy}","received_events_url":"https://api.github.com/users/bvv4ik/received_events","type":"User","site_admin":false},"created_at":"2015-07-14T20:34:43Z","updated_at":"2015-07-14T20:34:43Z","body":"Для теста:\r\nможно в нашей доке по АПИ глянуть описание и сгенерить слотов на пару недель"}}