Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| product:linq:exaples [15.09.2025 08:02] – ekaterina.menkhuzina | product:linq:exaples [15.09.2025 13:14] (текущий) – ekaterina.menkhuzina | ||
|---|---|---|---|
| Строка 358: | Строка 358: | ||
| return costs; | return costs; | ||
| + | </ | ||
| + | |||
| + | ===== Запрос с параметром, | ||
| + | Cам параметр отдельно: | ||
| + | <code csharp> | ||
| + | var classifier1 = parameters.GetValueOrDefault< | ||
| + | </ | ||
| + | |||
| + | Фильтр по параметру в основном запросе: | ||
| + | <code csharp> | ||
| + | .Where(ps => classifier1 != Guid.Empty ? (ps.Proizvodstvo___peredel_93e62e.Id == classifier1) : true) | ||
| + | </ | ||
| + | |||
| + | В самом предфильтре значение параметра: | ||
| + | <code csharp> | ||
| + | Proizvodstvo___peredel | ||
| + | </ | ||
| + | |||
| + | <code csharp> | ||
| + | var id = parameters.GetValueOrDefault< | ||
| + | var startDatePTR = parameters.GetValueOrDefault< | ||
| + | var idPTR = id; // parameters.GetValueOrDefault< | ||
| + | var endDatePTR = parameters.GetValueOrDefault< | ||
| + | var endDate = endDatePTR.Value.AddDays (1); | ||
| + | var currentYear = new DateTime(endDatePTR.Value.Year, | ||
| + | var currentYearend = currentYear.AddMonths(12); | ||
| + | var k1 = currentYear.AddMonths(3); | ||
| + | var k2 = k1.AddMonths(3); | ||
| + | var k3 = k2.AddMonths(3); | ||
| + | var k4 = k3.AddMonths(3); | ||
| + | var y2 = currentYear.AddYears(1); | ||
| + | var y3 = currentYear.AddYears(2); | ||
| + | var y4 = currentYear.AddYears(3); | ||
| + | // | ||
| + | // | ||
| + | var classifier1 = parameters.GetValueOrDefault< | ||
| + | // | ||
| + | var kt_3 = dataContext.KT_3_f1cf19_List | ||
| + | .Where(kt3 => kt3.GetParentHierarchy< | ||
| + | .Where(kt3 => kt3.GetParentHierarchy< | ||
| + | .Where(kt3 => kt3.Status != ProjectStatus.Cancelled ) | ||
| + | .OrderBy(kt3 => kt3.CreationDate) | ||
| + | .Select(kt3 => new { | ||
| + | kt3.Name, | ||
| + | MeropriyatieId = kt3.GetParentHierarchy< | ||
| + | EtapPtrId = (Guid? | ||
| + | PsId = (Guid? | ||
| + | | ||
| + | Служебный_тип_для_оборудования = (Guid? | ||
| + | kt3.BaselinePlanEndDate, | ||
| + | kt3.ActualEndDate, | ||
| + | }) | ||
| + | .ToList(); | ||
| + | |||
| + | var report22 = dataContext.Poziciya_specifikacii_437efa_List | ||
| + | .Where(ps => ps.Otnoshenie_k_chasti_PTR_c2c87f.Id == Classifier_Otnoshenie_k_chasti_PTR_0d5548.Osnovnaya_chastj_890632c4_Id || ps.Otnoshenie_k_chasti_PTR_c2c87f.Id == null) | ||
| + | .Where(ps => ps.Data_vklyucheniya_v_PTR_73d436 >= startDatePTR.Value) | ||
| + | .Where(ps => ps.GetParentHierarchy< | ||
| + | .Where(ps => ps.GetParentHierarchy< | ||
| + | .Where(ps => ps.Status == ProjectStatus.InWork || | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | ) | ||
| + | .Where(ps => ps.Gruppa_oborudovaniya_fdcaf9.Id == Classifier_Gruppa_oborudovaniya_94eb92.Osnovnoe_0dfc21cd_Id || | ||
| + | | ||
| + | .Where(ps => ps.Kategoriya_rashodov_d87c7c.Id == Classifier_Kategoriya_rashodov_df2928.Kapitaliziruemie_bcc3e43c_Id) | ||
| + | .Where(ps => ps.Razdel_PTR_730d6c.Id == Classifier_Razdel_PTR_27f85e._22_6200148b_Id) | ||
| + | .Where(ps => classifier1 != Guid.Empty ? (ps.Proizvodstvo___peredel_93e62e.Id == classifier1) : true) | ||
| + | .OrderBy(ps => ps.CreationDate) | ||
| + | .Select(ps => new { | ||
| + | ID_проекта = ps.Id, | ||
| + | Название_проекта = ps.Name, | ||
| + | Производство_передел = ps.Proizvodstvo___peredel_93e62e.Name, | ||
| + | Группа_оборудования = ps.Gruppa_oborudovaniya_fdcaf9.Name, | ||
| + | Отношение_к_части_ПТР = ps.Otnoshenie_k_chasti_PTR_c2c87f.Name, | ||
| + | Код_МПОФ = ps.GetParentHierarchy< | ||
| + | ID_МПОФ = ps.GetParentHierarchy< | ||
| + | Марка_оборудования = ps.GetChildren< | ||
| + | Фирма_страна_производитель = ps.GetChildren< | ||
| + | Фирма_страна_поставщик = ps.GetChildren< | ||
| + | ID_узкого_места = (Guid? | ||
| + | Код_узкого_места = ps.Svyazan_s__uzkim_mestom_459c92_08ee48.FirstOrDefault().Kod_uzkogo_mesta_6f8714, | ||
| + | Кол_во = ps.Kol__vo_6a6a43, | ||
| + | Бюджет_ПОФ = ps.GetChildren< | ||
| + | Дата_включения_в_ПТР = ps.Data_vklyucheniya_v_PTR_73d436, | ||
| + | ФАКТ_платежи = ps.GetChildren< | ||
| + | ФАКТ_платежи_с_предыдущих_лет = ps.GetChildren< | ||
| + | Причины_отклонений = ps.GetChildren< | ||
| + | Предприятия_холдинга = ps.GetParentHierarchy< | ||
| + | Кол_во_Факт = ps.Kol__vo_FAKT_747cbf, | ||
| + | | ||
| + | План_сумма_1_кв = ps.GetChildren< | ||
| + | План_сумма_2_кв = ps.GetChildren< | ||
| + | План_сумма_3_кв = ps.GetChildren< | ||
| + | План_сумма_4_кв = ps.GetChildren< | ||
| + | | ||
| + | Факт_сумма_1_кв = ps.GetChildren< | ||
| + | Факт_сумма_2_кв = ps.GetChildren< | ||
| + | Факт_сумма_3_кв = ps.GetChildren< | ||
| + | Факт_сумма_4_кв = ps.GetChildren< | ||
| + | | ||
| + | Номер_договора = ps.GetParentHierarchy< | ||
| + | | ||
| + | MeropriyatieId = (Guid? | ||
| + | EtapPtrId = (Guid? | ||
| + | }) | ||
| + | .ToList() | ||
| + | .Select(p => new{ | ||
| + | p.ID_проекта, | ||
| + | p.Название_проекта, | ||
| + | p.Производство_передел, | ||
| + | p.Группа_оборудования, | ||
| + | p.Отношение_к_части_ПТР, | ||
| + | p.Код_МПОФ, | ||
| + | p.ID_МПОФ, | ||
| + | p.Марка_оборудования, | ||
| + | p.Фирма_страна_производитель, | ||
| + | p.Фирма_страна_поставщик, | ||
| + | p.ID_узкого_места, | ||
| + | p.Код_узкого_места, | ||
| + | p.Кол_во, | ||
| + | p.Бюджет_ПОФ, | ||
| + | p.Дата_включения_в_ПТР, | ||
| + | p.ФАКТ_платежи, | ||
| + | p.ФАКТ_платежи_с_предыдущих_лет, | ||
| + | p.Причины_отклонений, | ||
| + | p.Предприятия_холдинга, | ||
| + | p.Кол_во_Факт, | ||
| + | | ||
| + | p.План_сумма_1_кв, | ||
| + | p.План_сумма_2_кв, | ||
| + | p.План_сумма_3_кв, | ||
| + | p.План_сумма_4_кв, | ||
| + | | ||
| + | p.Факт_сумма_1_кв, | ||
| + | p.Факт_сумма_2_кв, | ||
| + | p.Факт_сумма_3_кв, | ||
| + | p.Факт_сумма_4_кв, | ||
| + | | ||
| + | КТ_ТЗ_план = | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.TZ_i_konkursnaya_dokumentaciya_utverzhdeni_79c8892e_Id) | ||
| + | .FirstOrDefault(k => k.EtapPtrId == p.EtapPtrId && k.EtapPtrId != null)? | ||
| + | .BaselinePlanEndDate ?? | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.TZ_i_konkursnaya_dokumentaciya_utverzhdeni_79c8892e_Id) | ||
| + | .FirstOrDefault(k => k.MeropriyatieId == p.MeropriyatieId && k.EtapPtrId == null)? | ||
| + | .BaselinePlanEndDate, | ||
| + | | ||
| + | КТ_ТЗ_факт = | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.TZ_i_konkursnaya_dokumentaciya_utverzhdeni_79c8892e_Id) | ||
| + | .FirstOrDefault(k => k.EtapPtrId == p.EtapPtrId && k.EtapPtrId != null)? | ||
| + | .ActualEndDate ?? | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.TZ_i_konkursnaya_dokumentaciya_utverzhdeni_79c8892e_Id) | ||
| + | .FirstOrDefault(k => k.MeropriyatieId == p.MeropriyatieId && k.EtapPtrId == null)? | ||
| + | .ActualEndDate, | ||
| + | | ||
| + | КТ_Конкурс_план = | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.Konkurs_zavershen_9b06d84d_Id) | ||
| + | .FirstOrDefault(k => k.EtapPtrId == p.EtapPtrId && k.EtapPtrId != null)? | ||
| + | .BaselinePlanEndDate ?? | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.Konkurs_zavershen_9b06d84d_Id) | ||
| + | .FirstOrDefault(k => k.MeropriyatieId == p.MeropriyatieId && k.EtapPtrId == null)? | ||
| + | .BaselinePlanEndDate, | ||
| + | | ||
| + | КТ_Конкурс_факт = | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.Konkurs_zavershen_9b06d84d_Id) | ||
| + | .FirstOrDefault(k => k.EtapPtrId == p.EtapPtrId && k.EtapPtrId != null)? | ||
| + | .ActualEndDate ?? | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.Konkurs_zavershen_9b06d84d_Id) | ||
| + | .FirstOrDefault(k => k.MeropriyatieId == p.MeropriyatieId && k.EtapPtrId == null)? | ||
| + | .ActualEndDate, | ||
| + | | ||
| + | КТ_Договор_план = | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.Dogovor_zaklyuchen_3a8ff8d9_Id) | ||
| + | .FirstOrDefault(k => k.EtapPtrId == p.EtapPtrId && k.EtapPtrId != null)? | ||
| + | .BaselinePlanEndDate ?? | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.Dogovor_zaklyuchen_3a8ff8d9_Id) | ||
| + | .FirstOrDefault(k => k.MeropriyatieId == p.MeropriyatieId && k.EtapPtrId == null)? | ||
| + | .BaselinePlanEndDate, | ||
| + | | ||
| + | КТ_Договор_факт = | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.Dogovor_zaklyuchen_3a8ff8d9_Id) | ||
| + | .FirstOrDefault(k => k.EtapPtrId == p.EtapPtrId && k.EtapPtrId != null)? | ||
| + | .ActualEndDate ?? | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.Dogovor_zaklyuchen_3a8ff8d9_Id) | ||
| + | .FirstOrDefault(k => k.MeropriyatieId == p.MeropriyatieId && k.EtapPtrId == null)? | ||
| + | .ActualEndDate, | ||
| + | | ||
| + | КТ_Поставка_план = | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.Postavka_osuschestvlena_d8967234_Id) | ||
| + | .FirstOrDefault(k => k.PsId == p.ID_проекта && k.PsId != null)? | ||
| + | .BaselinePlanEndDate, | ||
| + | КТ_Поставка_факт = | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.Postavka_osuschestvlena_d8967234_Id) | ||
| + | .FirstOrDefault(k => k.PsId == p.ID_проекта && k.PsId != null)? | ||
| + | .ActualEndDate, | ||
| + | | ||
| + | КТ_Монтаж_план = | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.Montazh_osuschestvlen_73254f39_Id) | ||
| + | .FirstOrDefault(k => k.PsId == p.ID_проекта && k.PsId != null)? | ||
| + | .BaselinePlanEndDate, | ||
| + | КТ_Монтаж_факт = | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.Montazh_osuschestvlen_73254f39_Id) | ||
| + | .FirstOrDefault(k => k.PsId == p.ID_проекта && k.PsId != null)? | ||
| + | .ActualEndDate, | ||
| + | | ||
| + | КТ_Ввод_в_Э_план = | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.Oborudovanie_vvedeno_v_ekspluataciyu_c2bc6e62_Id) | ||
| + | .FirstOrDefault(k => k.PsId == p.ID_проекта && k.PsId != null)? | ||
| + | .BaselinePlanEndDate, | ||
| + | КТ_Ввод_в_Э_факт = | ||
| + | kt_3 | ||
| + | .Where(k => k.Служебный_тип_для_оборудования == Classifier_Sluzhebnij_Tip_KT_dlya_oborudovaniya_SMR_611543.Oborudovanie_vvedeno_v_ekspluataciyu_c2bc6e62_Id) | ||
| + | .FirstOrDefault(k => k.PsId == p.ID_проекта && k.PsId != null)? | ||
| + | .ActualEndDate, | ||
| + | | ||
| + | p.Номер_договора, | ||
| + | }) | ||
| + | .Select(p => new{ | ||
| + | p.ID_проекта, | ||
| + | p.Название_проекта, | ||
| + | p.Производство_передел, | ||
| + | p.Группа_оборудования, | ||
| + | p.Отношение_к_части_ПТР, | ||
| + | p.Код_МПОФ, | ||
| + | p.ID_МПОФ, | ||
| + | p.Марка_оборудования, | ||
| + | p.Фирма_страна_производитель, | ||
| + | p.Фирма_страна_поставщик, | ||
| + | p.ID_узкого_места, | ||
| + | p.Код_узкого_места, | ||
| + | p.Кол_во, | ||
| + | p.Бюджет_ПОФ, | ||
| + | p.Дата_включения_в_ПТР, | ||
| + | p.ФАКТ_платежи, | ||
| + | p.ФАКТ_платежи_с_предыдущих_лет, | ||
| + | p.Причины_отклонений, | ||
| + | p.Предприятия_холдинга, | ||
| + | | ||
| + | p.План_сумма_1_кв, | ||
| + | p.План_сумма_2_кв, | ||
| + | p.План_сумма_3_кв, | ||
| + | p.План_сумма_4_кв, | ||
| + | | ||
| + | p.Факт_сумма_1_кв, | ||
| + | p.Факт_сумма_2_кв, | ||
| + | p.Факт_сумма_3_кв, | ||
| + | p.Факт_сумма_4_кв, | ||
| + | | ||
| + | p.КТ_ТЗ_план, | ||
| + | КТ_ТЗ_факт = p.КТ_ТЗ_факт < endDate ? p.КТ_ТЗ_факт : null, | ||
| + | p.КТ_Конкурс_план, | ||
| + | КТ_Конкурс_факт = p.КТ_Конкурс_факт < endDate ? p.КТ_Конкурс_факт : null, | ||
| + | p.КТ_Договор_план, | ||
| + | КТ_Договор_факт = p.КТ_Договор_факт < endDate ? p.КТ_Договор_факт : null, | ||
| + | p.КТ_Поставка_план, | ||
| + | КТ_Поставка_факт = p.КТ_Поставка_факт < endDate ? p.КТ_Поставка_факт : null, | ||
| + | p.КТ_Монтаж_план, | ||
| + | КТ_Монтаж_факт = p.КТ_Монтаж_факт < endDate ? p.КТ_Монтаж_факт : null, | ||
| + | p.КТ_Ввод_в_Э_план, | ||
| + | КТ_Ввод_в_Э_факт = p.КТ_Ввод_в_Э_факт < endDate ? p.КТ_Ввод_в_Э_факт : null, | ||
| + | p.Номер_договора, | ||
| + | p.Кол_во_Факт, | ||
| + | | ||
| + | }) | ||
| + | .ToList() | ||
| + | .OrderBy(o => o.Производство_передел) | ||
| + | .ThenByDescending(o => o.Группа_оборудования) | ||
| + | .ThenBy(o => o.Код_МПОФ); | ||
| + | |||
| + | return report22; | ||
| + | </ | ||
| + | |||
| + | ===== Объединение трудозатрат по ресурсам, | ||
| + | <code csharp> | ||
| + | var Today = DateTime.Today; | ||
| + | var ThisMonth = new DateTime (Today.Year, | ||
| + | //var EndMonth = ThisMonth.AddYears(2).AddMonths(-1); | ||
| + | var IDprj = parameters.GetValueOrDefault< | ||
| + | var Person = dataContext.Persons.Select(a => new {a.Id, a.LastName}).ToList(); | ||
| + | |||
| + | var Costs = dataContext.ProjectCosts | ||
| + | .Where( p => p.Project.Name != null && p.Value != 0 && p.Project.GetParentHierarchy< | ||
| + | .Select( p => new { | ||
| + | Договор = p.Project.GetParentHierarchy< | ||
| + | Ресурс = p.Person.LastName, | ||
| + | ID_Ресурса = p.Person.Id, | ||
| + | Трудозатраты = p.Value, | ||
| + | }).ToList().GroupBy(u=> | ||
| + | Договор = key.Договор, | ||
| + | Ресурс = key.Ресурс, | ||
| + | ID_Ресурса = group.FirstOrDefault().ID_Ресурса.ToString(), | ||
| + | Трудозатраты = Math.Round(group.Sum(a => a.Трудозатраты))}).OrderBy(x => x.Договор).ToList(); | ||
| + | |||
| + | var FactCost = dataContext.Uchet_vremeni_977ff0_List | ||
| + | .Where (p => p.Project.Name != null && p.Summa_06ff93 != null && p.Project.GetParentHierarchy< | ||
| + | .Select(p => new{ | ||
| + | Договор = p.Project.GetParentHierarchy< | ||
| + | ID_Ресурса = p.Resurs_caaaaa, | ||
| + | Факт = p.Summa_06ff93, | ||
| + | }) | ||
| + | .ToList() | ||
| + | .Select(p => new { | ||
| + | p.Договор, | ||
| + | Ресурс = Person.Where(a => a.Id.ToString() == p.ID_Ресурса).FirstOrDefault().LastName, | ||
| + | p.ID_Ресурса, | ||
| + | p.Факт | ||
| + | }) | ||
| + | .ToList() | ||
| + | .GroupBy(u=> | ||
| + | Договор = key.Договор, | ||
| + | Ресурс = group.FirstOrDefault().Ресурс, | ||
| + | ID_Ресурса = key.ID_Ресурса.ToString(), | ||
| + | Факт = Math.Round((double)group.Sum(a => a.Факт))}).OrderBy(x => x.Договор).ToList(); | ||
| + | |||
| + | var CorrCost = dataContext.Korrektirovka_videlennih_chasov_421cbf_List | ||
| + | .Where (p => p.Project.Name != null && p.Summa_06ff93 != null && p.Project.GetParentHierarchy< | ||
| + | .Select(p => new{ | ||
| + | Договор = p.Project.GetParentHierarchy< | ||
| + | ID_Ресурса = p.Resurs_caaaaa, | ||
| + | Корректировка = p.Summa_06ff93, | ||
| + | Дата = p.Date | ||
| + | }) | ||
| + | .ToList() | ||
| + | .Select(p => new { | ||
| + | p.Договор, | ||
| + | Ресурс = Person.Where(a => a.Id.ToString() == p.ID_Ресурса).FirstOrDefault().LastName, | ||
| + | p.ID_Ресурса, | ||
| + | p.Корректировка, | ||
| + | Месяц_Корректировки = new DateTime (p.Дата.Value.Year, | ||
| + | }) | ||
| + | .ToList() | ||
| + | .GroupBy(u=> | ||
| + | Договор = key.Договор, | ||
| + | Ресурс = group.FirstOrDefault().Ресурс, | ||
| + | ID_Ресурса = key.ID_Ресурса.ToString(), | ||
| + | Корректировка = Math.Round((double)group.Sum(a => a.Корректировка)), | ||
| + | }).OrderBy(x => x.Договор).ToList(); | ||
| + | |||
| + | var JoinCost1 = FactCost.GroupJoin(Costs, | ||
| + | Договор = x.Договор, | ||
| + | Ресурс = x.Ресурс, | ||
| + | ID_Ресурса = x.ID_Ресурса, | ||
| + | Трудозатраты = u.Sum(a => | ||
| + | Факт = x.Факт | ||
| + | }).ToList(); | ||
| + | var JoinCost2 = Costs.GroupJoin(FactCost, | ||
| + | Договор = x.Договор, | ||
| + | Ресурс = x.Ресурс, | ||
| + | ID_Ресурса = x.ID_Ресурса, | ||
| + | Трудозатраты = x.Трудозатраты, | ||
| + | Факт = u.Sum(a=> | ||
| + | }).ToList(); | ||
| + | |||
| + | var UnionCost1 = JoinCost1.Union(JoinCost2).ToList(); | ||
| + | |||
| + | var JoinCost3 = UnionCost1.GroupJoin(CorrCost, | ||
| + | Договор = x.Договор, | ||
| + | Ресурс = x.Ресурс, | ||
| + | ID_Ресурса = x.ID_Ресурса, | ||
| + | Трудозатраты = x.Трудозатраты, | ||
| + | Факт = x.Факт, | ||
| + | Корректировка = u.Sum(a=> | ||
| + | }).ToList(); | ||
| + | var JoinCost4 = CorrCost.GroupJoin(UnionCost1, | ||
| + | Договор = x.Договор, | ||
| + | Ресурс = x.Ресурс, | ||
| + | ID_Ресурса = x.ID_Ресурса, | ||
| + | Трудозатраты = u.Sum(a => | ||
| + | Факт = u.Sum(a => a.Факт), | ||
| + | Корректировка = x.Корректировка, | ||
| + | }).ToList(); | ||
| + | |||
| + | var UnionCost2 = JoinCost3.Union(JoinCost4).ToList(); | ||
| + | |||
| + | var CostSum = UnionCost2 | ||
| + | |||
| + | .Select( p => new { | ||
| + | Договор = p.Договор, | ||
| + | Ресурс = "", | ||
| + | ID_Ресурса = "", | ||
| + | Трудозатраты = p.Трудозатраты, | ||
| + | Факт = p.Факт, | ||
| + | Корректировка = p.Корректировка, | ||
| + | }).ToList().GroupBy(u=> | ||
| + | Договор = key.Договор, | ||
| + | Ресурс = key.Договор, | ||
| + | ID_Ресурса = "", | ||
| + | Трудозатраты = Math.Round(group.Sum(a => a.Трудозатраты)), | ||
| + | Факт = Math.Round(group.Sum(a => a.Факт)), | ||
| + | }).OrderBy(x => x.Договор).ToList(); | ||
| + | |||
| + | var Result = UnionCost2.Concat(CostSum).OrderBy(x => x.Ресурс).OrderBy(x => x.Договор).ToList(); | ||
| + | |||
| + | return Result; | ||
| + | </ | ||
| + | |||
| + | ===== Поиск задач в проекте с максимальным отклонением ===== | ||
| + | <code csharp> | ||
| + | var сегодня = DateTime.Now; | ||
| + | |||
| + | var zadacha = dataContext.Zadacha_2b33fa_List | ||
| + | .Where(p => p.TimeReserve == 0 && p.Status == ProjectStatus.InWork) | ||
| + | .Where(p => p.GetParentHierarchy< | ||
| + | .Select(p => new { | ||
| + | Проект_ID = | ||
| + | Проект_name = p.GetParentHierarchy< | ||
| + | Задача_КП = p.Name, | ||
| + | Задача_КП_ID = p.Id, | ||
| + | УДО = p.BaselinePlanEndDate, | ||
| + | ПДО = p.SystemEndDate, | ||
| + | ФДО = p.ActualEndDate, | ||
| + | p.CalendarId, | ||
| + | .ToList(); | ||
| + | var allzadacha = zadacha | ||
| + | .Select(r => new { | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | r.УДО, | ||
| + | r.ПДО, | ||
| + | r.ФДО, | ||
| + | r.CalendarId, | ||
| + | Отклонение_Задач = r.УДО != null ? Math.Round(workCalendars.GetWorkCalendar(r.CalendarId).GetWorktimeDays(r.УДО.Value.Date, | ||
| + | //return allzadacha; | ||
| + | |||
| + | var id = parameters.GetValueOrDefault< | ||
| + | var idproject = id; | ||
| + | var Katalog = parameters.GetValueOrDefault< | ||
| + | var projects = dataContext.Projects | ||
| + | .Where(p => p is IT__proekt_ff08df || p is Proekt_a3e2fb || p is Proekt_stroiteljstva_OKS_f001b5) | ||
| + | .Where(d => (Guid? | ||
| + | .Select(p => new { | ||
| + | p.Id, | ||
| + | p.Name, | ||
| + | |||
| + | УДН = p.BaselinePlanStartDate, | ||
| + | УДО = p.BaselinePlanEndDate, | ||
| + | ПДН = p.SystemStartDate, | ||
| + | ПДО = p.SystemEndDate, | ||
| + | ФДН = p.ActualStartDate, | ||
| + | ФДО = p.ActualEndDate, | ||
| + | p.CalendarId, | ||
| + | // Длительность = DbFunctions.DiffDays(p.SystemStartDate, | ||
| + | ПДО_Задача_на_КП = p.GetChildrenHierarchy< | ||
| + | УДО_Задача_на_КП = p.GetChildrenHierarchy< | ||
| + | |||
| + | Задача_КП = p.GetChildrenHierarchy< | ||
| + | Задача_КП_ID = (Guid? | ||
| + | Процент_вып_проекта = p.PercentComplete, | ||
| + | }) | ||
| + | |||
| + | .ToList() | ||
| + | .Select(r => new{ | ||
| + | | ||
| + | r.Id, | ||
| + | r.Name, | ||
| + | | ||
| + | r.УДН, | ||
| + | r.УДО, | ||
| + | r.ПДН, | ||
| + | r.ПДО, | ||
| + | r.ФДН, | ||
| + | r.ФДО, | ||
| + | r.CalendarId, | ||
| + | // | ||
| + | |||
| + | r.Задача_КП_ID, | ||
| + | r.Задача_КП, | ||
| + | r.ПДО_Задача_на_КП, | ||
| + | r.УДО_Задача_на_КП, | ||
| + | Отклонение_Задача_на_КП = r.Задача_КП_ID != null && r.УДО_Задача_на_КП != null ? Math.Round(workCalendars.GetWorkCalendar(r.CalendarId).GetWorktimeDays(r.УДО_Задача_на_КП.Value.Date, | ||
| + | r.Процент_вып_проекта, | ||
| + | |||
| + | Отклонение_Список_Задач = allzadacha.Where(d => d.Проект_ID == r.Id ).Select (h => h.Задача_КП) , | ||
| + | Отклонение_Задача_на_КП2 = allzadacha.Where(d => d.Проект_ID == r.Id ).Any() ? allzadacha.Where(d => d.Проект_ID == r.Id).OrderByDescending(k => k.Отклонение_Задач).FirstOrDefault().Отклонение_Задач : 0, | ||
| + | Отклонение_Задача_на_КП_max = allzadacha.Where(d => d.Проект_ID == r.Id ).Any() ? allzadacha.Where(d => d.Проект_ID == r.Id ).Max(g => g.Отклонение_Задач) : 0, | ||
| + | }) | ||
| + | .ToList(); | ||
| + | return projects; | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Последняя по времени запись в протоколе ===== | ||
| + | <code csharp> | ||
| + | // Пример linq-запроса на событие последнего изменения объекта: | ||
| + | var projectId = parameters.GetValueOrDefault< | ||
| + | var lastEvent = dataContext.Events // получаем события | ||
| + | .Where(p => p.ObjectId == projectId) // фильтруем по id объекта | ||
| + | .OrderByDescending(p => p.Time) // сортировка по полю Time | ||
| + | .Select(p => new | ||
| + | { | ||
| + | Время = p.Time, | ||
| + | UID_пользователя = p.PersonId, | ||
| + | Текст = p.MessageHtml, | ||
| + | ИД_проекта = p.ObjectId, | ||
| + | Данные_события = p.MessageData, | ||
| + | Тип_события = p.Type, | ||
| + | }) | ||
| + | .Take(1) // берем только одну запись | ||
| + | .ToList(); // преобразуем в список | ||
| + | |||
| + | return lastEvent; // Возвращаем список, | ||
| </ | </ | ||