Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
product:linq:gantt:example_1 [13.11.2020 14:29] – создано maynproduct:linq:gantt:example_1 [04.02.2021 20:15] (текущий) – [Последовательность настройки] mayn
Строка 1: Строка 1:
 ====== Как вывести "Отклонение базового плана" и "Статус отклонения" в Диаграмму Ганта ====== ====== Как вывести "Отклонение базового плана" и "Статус отклонения" в Диаграмму Ганта ======
-<callout type="danger" icon="true"> 
-Статья в разработке!! 
-</callout> 
  
-1. Пошаговая инструкция для настройки отображения колонок LINQ-запроса в Диаграмме Ганта. Колонки «Отклонение от базового плана» и «Статус отклонения».  +=====Глоссарий ===== 
-1.1. LINQ (Language Integrated Query) – простой SQL-подобный язык запросов к источнику данных.  +  * LINQ (Language Integrated Query) – простой SQL-подобный язык запросов к источнику данных 
-1.2. БП – Базовый план. +  * БП – Базовый план. 
-1.3. ПДО – Плановая дата окончания. +  * ПДО – Плановая дата окончания. 
-1.4. УДО – Утвержденная дата окончания по БП. +  * УДО – Утвержденная дата окончания по БП. 
-1.5. ФДО – Фактическая дата окончания +  * ФДО – Фактическая дата окончания 
-№ п/п Описание действий + 
-1. Перейдите на страницу «Администрирование».+===== Последовательность настройки ===== 
 +  - Перейдите на страницу «Администрирование». 
 +  - Перейдите на страницу «Источники LINQ» создания источников данных с помощью LINQ-запросов.  \\  //Также возможно перейти по прямой ссылке, указав после адреса системы (~/cmn.aspx?pageName=DataSources.List.// 
 +  - Нажмите «Пересоздать контекст».  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_1.png?nolink |}}</image> 
 +  - Нажмите «Новый источник данных», после того как она станет активной \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_2.png?nolink |}}</image> 
 +  - В поле «Название» на странице создания источника данных через LINQ-запрос укажите «Расчет отклонения от базового плана» (без кавычек).  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_3.png?nolink |}}</image> 
 +  - В поле «Запрос» полностью удалите код тестового запроса. 
 +  - В поле «Запрос» полностью скопируйте код запроса: <code csharp>/
 +Поле "deviationPlan" с отклонением от БП.  
 +Содержит разницу (отклонение) в РАБОЧИХ днях между соответствующими плановой или фактической датой окончания (ПДО или ФДО соответственно) и утвержденной датой окончания (УДО) по последней версии БПЛогика расчета для каждого соответствующего объекта: 
 +- Если у объекта есть УДО и ФДО, то отклонение = ФДО – УДО. 
 +- Если у объекта есть УДО, но нет ФДО, то отклонение = ПДО – УДО. 
 +- Если у объекта нет УДО, то расчет не производится. В соответствующей ячейке поля содержится пустое значение (не 0, а именно пустое значение)
 +- Положительные значения говорят о просрочке, отрицательные – об опережении утвержденного срока в БП. 
 + 
 +Поле "deviationStatus" с числовым значением индикатора отклонения от БП. Логика расчета для каждого соответствующего объекта: 
 +Если значение поля "deviationPlan" в диапазоне (-∞; 7], то в поле записывается значение = 1. 
 +- Если значение поля "deviationPlan" в диапазоне (7; 14], то в поле записывается значение = 2. 
 +- Если значение поля "deviationPlan" в диапазоне (14; +∞], то в поле записывается значение = 3. 
 +- Если значение поля "deviationPlan" пустое, то в поле "deviationStatus" ничего не записывается (остается пустое значение). 
 +*/ 
 + 
 +var objectID = parameters.GetValueOrDefault<Guid>("RootProjectId", new Guid("9443d7de-f036-4367-b51b-5c47d8f85a01")); // ID объекта из Ганта 
 +var deviation = dataContext.Projects 
 +  .Where(p => p.BaselinePlanEndDate != null && p.GetParentHierarchy<Project>(true).Any(a => a.Id == objectID) ) 
 +  .OrderBy(p => p.Name) 
 +  .Select(a => new {a.Id,   
 +                    a.Name,  
 +                    a.SystemEndDate,  
 +                    a.BaselinePlanEndDate,  
 +                    a.ActualEndDate, 
 +                    a.CalendarId 
 +                    }) 
 +  .ToList() 
 +  .Select(b => new {b.Id,   
 +                    b.Name,  
 +                    b.SystemEndDate,  
 +                    b.BaselinePlanEndDate,  
 +                    b.ActualEndDate, 
 +                    deviationPlan = Math.Round(b.ActualEndDate != null ? workCalendars.GetWorkCalendar(b.CalendarId).GetWorktimeDays(b.BaselinePlanEndDate.Value.Date, b.ActualEndDate.Value.Date) : workCalendars.GetWorkCalendar(b.CalendarId).GetWorktimeDays(b.BaselinePlanEndDate.Value.Date, b.SystemEndDate.Value.Date)) 
 +                   } 
 +          ) 
 +  .ToList() 
 +  .Select(c => new {c.Id,   
 +                    c.Name,  
 +                    c.SystemEndDate,  
 +                    c.BaselinePlanEndDate,  
 +                    c.ActualEndDate, 
 +                    c.deviationPlan, 
 +                    deviationStatus1 = c.deviationPlan <= 7 ? : 0, 
 +                    deviationStatus2 = c.deviationPlan > 7 && c.deviationPlan <= 14 ? : 0, 
 +                    deviationStatus3 = c.deviationPlan > 14 ? 3 : 0}) 
 +   
 +  .ToList() 
 +  .Select(d => new {ObjectId = d.Id,   
 +                    d.Name,  
 +                    d.SystemEndDate,  
 +                    d.BaselinePlanEndDate,  
 +                    d.ActualEndDate, 
 +                    deviationPlan = d.deviationPlan, 
 +                    deviationStatus = d.deviationStatus1 + d.deviationStatus2 + d.deviationStatus3}) 
 +  .ToList(); 
 +return deviation;</code>  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_4.png?nolink |}}</image> 
 +  - Во второй вкладке браузера перейдите в карточку любого объекта системы, имеющего дочерние объекты. Желательно в родительскую задачу или небольшой проект с малым количеством дочерних объектов
 +  - Скопируйте в адресной строке ID этого объекта (после uid=) \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_5.png?nolink |}}</image> 
 +  - Переключитесь обратно на первую вкладку браузера, на страницу создания источника данных, где ранее был скопирован код запроса (шаг 7). 
 +  - Замените ID из строки кода на скопированный вами ID ранее (шаг 9). Это необходимо для первичного запуска кода запроса, что в свою очередь необходимо для возможности его привязки к диаграмме Ганта  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_6.png?nolink |}}</image> 
 +  - Активируйте опцию «Может использоваться в диаграмме Ганта»  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_7.png?nolink |}}</image> 
 +  - Нажмите кнопку «Сделать запрос и сохранить». 
 +  - Дождитесь, пока запрос выполнится и сохранится. 
 +  - Убедитесь, что запрос выполнился успешно. Об этом будут свидетельствовать отсутствие ошибок и аналогичная таблица с результатами запроса.  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_8.png?nolink |}}</image> 
 +  - Закройте страницу сохраненного источника данных «Расчет отклонения от базового плана». 
 +  - Перейдите на страницу «Администрирование» -> «Диаграмма Ганта».  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_9.png?nolink |}}</image> 
 +  - В разделе «Настройка полей из LINQ-запроса» -> запрос «Расчет отклонения от базового плана» -> «Настроить».  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_10.png?nolink |}}</image> 
 +  - Произведите следующие настройки:  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_11.png?nolink |}}</image> 
 +    - Активируйте чекбоксы в поле {{:product:linq:gantt:linq_example_12.png?nolink}} у полей «deviationPlan» и «deviationStatus». 
 +      * deviationPlan: 
 +        * Псевдоним - «Отклонение от БП» (без кавычек). Можете указать свое название поля с количеством дней отклонения, которое вы хотите увидеть в диаграмме Ганта
 +        * Тип – Число
 +        * Формат – Число. 
 +      * deviationStatus: 
 +        * Псевдоним - «Статус отклонения» (без кавычек). Можете указать свое название поля с индикатором отклонения, которое вы хотите увидеть в диаграмме Ганта. 
 +        * Тип – Индикатор. 
 +        * Добавьте 3 индикатора: 
 +          * Для зеленого индикатора укажите условие «= 1» (без кавычек). Можете указать свой цвет индикатора, который вы хотите увидеть в диаграмме Ганта для отклонения в диапазоне (-∞; 7]. 
 +          * Для оранжевого индикатора укажите условие «= 2» (без кавычек) Можете указать свой цвет индикатора, который вы хотите увидеть в диаграмме Ганта для отклонения в диапазоне (7; 14]. 
 +          * Для красного индикатора укажите условие «= 3» (без кавычек) Можете указать свой цвет индикатора, который вы хотите увидеть в диаграмме Ганта для отклонения в диапазоне (14; +∞]. 
 +  - Нажмите кнопку «Сохранить». 
 +  - Убедитесь, что настройки успешно сохранены:  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_14.png?nolink |}}</image>  \\  На странице «Настройка диаграммы Ганта» должны быть отображены два поля «Отклонение от БП» и «Статус отклонения», которые теперь можно отобразить в диаграмме Ганта.
    
-2. Перейдите на страницу «Источники LINQ» создания источников данных с помощью LINQ-запросов.+===== Появились ли поля в диаграмме Ганта? ===== 
 +  - Перейдите в диаграмму Ганта любого объекта системы. 
 +  - Раскройте выпадающий список у любой из колонок диаграммы Ганта, наведя курсор мыши на шапку колонки и нажав на  . 
 +  - Наведите курсор мыши на команду «Пользовательские столбцы» и активируйте чекбоксы «Отклонение от БП» и «Статус отклонения».  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_15.png?nolink |}}</image> 
 +  - Убедитесь, что указанные колонки добавились в табличную часть диаграммы Ганта.  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_16.png?nolink |}}</image>
    
-Примечание: возможно перейти по прямой ссылке, указав после адреса системы (/cmn.aspx?pageName=DataSources.List, к примеру https://a2nta.ru/cmn.aspx?pageName=DataSources.List). +===Настройка представления поле в Ганте ==== 
-3. Нажмите кнопку «Пересоздать контекст». +  Настройте порядок новых полей среди других колонок табличной части диаграммы Ганта. 
-  +  При необходимости сохраните настройки представления, чтобы данные колонки отображались по умолчанию при открытии страницы Диаграммы Ганта.  \\  <image shape="thumbnail">{{ :product:linq:gantt:linq_example_17.png?nolink |}}</image> 
-4. Нажмите кнопку «Новый источник данных», после того как она станет активной. +  - Если данные в колонках полностью отсутствуют, значит у вас не создан ни 1 БП для объекта, с карточки которого была открыта диаграмма Ганта. 
-  +  Данные в колонках LINQ-запросов («Отклонение от БП» и «Статус отклонения») обновляются в 3 случаях: 
-5. В поле «Название» на странице создания источника данных через LINQ-запрос укажите «Расчет отклонения от базового плана» (без кавычек). +    При открытии страницы Диаграммы Ганта. 
-  +    При обновлении страницы Диаграммы Ганта. 
-6. В поле «Запрос» полностью удалите код тестового запроса. +    При сохранении диаграммы Ганта (по нажатию на кнопку «Сохранить»).
-7. В поле «Запрос» полностью скопируйте код из файла «2. Код запроса.txt». +
-  +
-8. Во второй вкладке браузера перейдите в карточку любого объекта системы, имеющего дочерние объекты. Желательно в родительскую задачу или небольшой проект с малым количеством дочерних объектов. +
-9. Скопируйте в адресной строке ID этого объекта (после uid=). +
-  +
-10. Переключитесь обратно на первую вкладку браузера, на страницу создания источника данных, где ранее был скопирован код запроса (шаг 7). +
-11. Замените ID из строки кода: +
-  +
-На скопированный вами ID ранее (шаг 9). Это необходимо для первичного запуска кода запроса, что в свою очередь необходимо для возможности его привязки к диаграмме Ганта. +
-12. Активируйте опцию «Может использоваться в диаграмме Ганта» +
-  +
-13. Нажмите кнопку «Сделать запрос и сохранить». +
-14. Дождитесь, пока запрос выполнится и сохранится. +
-  +
-15. Убедитесь, что запрос выполнился успешно. Об этом будут свидетельствовать отсутствие ошибок и аналогичная таблица с результатами запроса. +
-  +
-16. Закройте страницу сохраненного источника данных «Расчет отклонения от базового плана». +
-17. Перейдите на страницу «Администрирование». +
-18. Перейдите на страницу «Диаграмма Ганта». +
-  +
-19. В разделе «Настройка полей из LINQ-запроса» выберите запрос «Расчет отклонения от базового плана» и нажмите кнопку «Настроить». +
-  +
-20. Произведите следующие настройки: +
-  +
-Активируйте чекбоксы в поле   у полей «deviationPlan» и «deviationStatus». +
-deviationPlan: +
-• Псевдоним - «Отклонение от БП» (без кавычек). Можете указать свое название поля с количеством дней отклонения, которое вы хотите увидеть в диаграмме Ганта. +
-• Тип – Число. +
-• Формат – Число. +
-deviationStatus: +
-• Псевдоним - «Статус отклонения» (без кавычек). Можете указать свое название поля с индикатором отклонения, которое вы хотите увидеть в диаграмме Ганта. +
-• Тип – Индикатор. +
-• Добавьте 3 индикатора, используя кнопку   +
-o Для зеленого индикатора укажите условие «1» (без кавычек). Можете указать свой цвет индикатора, который вы хотите увидеть в диаграмме Ганта для отклонения в диапазоне (-∞; 7]. +
-o Для оранжевого индикатора укажите условие «2» (без кавычек) Можете указать свой цвет индикатора, который вы хотите увидеть в диаграмме Ганта для отклонения в диапазоне (7; 14]. +
-o Для красного индикатора укажите условие «3» (без кавычек) Можете указать свой цвет индикатора, который вы хотите увидеть в диаграмме Ганта для отклонения в диапазоне (14; +∞]. +
-21. Нажмите кнопку «Сохранить». +
-22. Убедитесь, что настройки успешно сохранены: +
-• На странице «Настройка диаграммы Ганта» отображены 2 поля «Отклонение от БП» и «Статус отклонения», которые теперь можно отобразить в диаграмме Ганта +
-  +
-№ п/п Проверка возможности добавления колонок в диаграмму Ганта +
-23. Перейдите в диаграмму Ганта любого объекта системы. +
-24. Раскройте выпадающий список у любой из колонок диаграммы Ганта, наведя курсор мыши на шапку колонки и нажав на  . +
-25. Наведите курсор мыши на команду «Пользовательские столбцы» и активируйте чекбоксы «Отклонение от БП» и «Статус отклонения». +
-  +
-26. Убедитесь, что указанные колонки добавились в табличную часть диаграммы Ганта. +
-  +
-Примечание:  +
-1. Настройте их порядок среди других колонок табличной части диаграммы Ганта. +
-2. При необходимости сохраните настройки представления, чтобы данные колонки отображались по умолчанию при открытии страницы Диаграммы Ганта. +
-  +
-3. Если данные в колонках полностью отсутствуют, значит у вас не создан ни 1 БП для объекта, с карточки которого была открыта диаграмма Ганта. +
-4. Данные в колонках LINQ-запросов («Отклонение от БП» и «Статус отклонения») обновляются в 3 случаях: +
-При открытии страницы Диаграммы Ганта. +
-При обновлении страницы Диаграммы Ганта. +
-При сохранении диаграммы Ганта (по нажатию на кнопку «Сохранить»). +
- +