private static void ExportNotAssign(DisciplineWorkload disciplineWorkload, Worksheet sheet, Dictionary <Worksheet, int> rowCounters, int countStud) { sheet.Cells[rowCounters[sheet], 1] = rowCounters[sheet] - 5; sheet.Cells[rowCounters[sheet], 2] = disciplineWorkload.DisciplineYear.Discipline.Name; sheet.Cells[rowCounters[sheet], 3] = disciplineWorkload.Group.Speciality.Name; sheet.Cells[rowCounters[sheet], 5] = disciplineWorkload.Group.StudyForm == StudyForm.FullTime ? "о" : "з"; sheet.Cells[rowCounters[sheet], 4] = disciplineWorkload.Group.Speciality.Faculty.ShortName; sheet.Cells[rowCounters[sheet], 6] = disciplineWorkload.Semester.Number; sheet.Cells[rowCounters[sheet], 7] = countStud; sheet.Cells[rowCounters[sheet], 8] = disciplineWorkload.Semester.CountOfWeeks; sheet.Cells[rowCounters[sheet], 11] = disciplineWorkload.DisciplineYear.CountOfLecture; sheet.Cells[rowCounters[sheet], 12] = disciplineWorkload.DisciplineYear.CountOfPractice; sheet.Cells[rowCounters[sheet], 13] = disciplineWorkload.DisciplineYear.CountOfLabs; sheet.Cells[rowCounters[sheet], 14] = disciplineWorkload.DisciplineYear.HasEx ? "1" : ""; sheet.Cells[rowCounters[sheet], 15] = disciplineWorkload.DisciplineYear.HasCR ? "+" : ""; //sheet.Cells[rowCounters[sheet], 16] = Convert.ToBoolean(reader[15]) ? "1" : ""; sheet.Cells[rowCounters[sheet], 17] = disciplineWorkload.DisciplineYear.HasKR ? "1" : ""; sheet.Cells[rowCounters[sheet], 18] = disciplineWorkload.DisciplineYear.HasKP ? "1" : ""; //sheet.Cells[rowCounters[sheet], 22] = Convert.ToBoolean(reader[33]) ? "1" : "";//нир sheet.Cells[rowCounters[sheet], 19 + 23] = disciplineWorkload.DisciplineYear.CountOfLearnigPracticeWeeks != 0 ? disciplineWorkload.DisciplineYear.CountOfLearnigPracticeWeeks * CalculationSettings.Default.UchPr : 0; //уч пр. sheet.Cells[rowCounters[sheet], 20 + 23] = disciplineWorkload.DisciplineYear.CountOfManufacturePracticeWeeks != 0 ? disciplineWorkload.DisciplineYear.CountOfManufacturePracticeWeeks * CalculationSettings.Default.PrPr : 0; //пр пр. sheet.Cells[rowCounters[sheet], 21 + 23] = disciplineWorkload.DisciplineYear.CountOfUndergraduatePracticeWeeks != 0 ? disciplineWorkload.DisciplineYear.CountOfUndergraduatePracticeWeeks * CalculationSettings.Default.PreddipPr : 0; //преддип пр. sheet.Cells[rowCounters[sheet], 22 + 23] = disciplineWorkload.DisciplineYear.CountOfNIIR != 0 ? (disciplineWorkload.DisciplineYear.CountOfNIIR) * CalculationSettings.Default.NIIR * countStud : 0; //нир ((Range)(sheet.Cells[rowCounters[sheet], 24 + 23])).Value = disciplineWorkload.DisciplineYear.Discipline.SpecialType == SpecialDisciplineKind.GEK ? (CalculationSettings.Default.GEK * countStud) : 0; //ГЭК. sheet.Cells[rowCounters[sheet], 25 + 23] = disciplineWorkload.DisciplineYear.Discipline.SpecialType == SpecialDisciplineKind.GAK ? (CalculationSettings.Default.GAK * countStud) : 0; //ГAК. sheet.Cells[rowCounters[sheet], 26 + 23] = disciplineWorkload.DisciplineYear.Discipline.SpecialType == SpecialDisciplineKind.GAK_PRED ? (CalculationSettings.Default.GAKPred * countStud) : 0; //ГAКпред. sheet.Cells[rowCounters[sheet], 27 + 23] = disciplineWorkload.DisciplineYear.Discipline.SpecialType == SpecialDisciplineKind.BAK_RUK ? (CalculationSettings.Default.DPruk * countStud) : 0; sheet.Cells[rowCounters[sheet], 28 + 23] = disciplineWorkload.DisciplineYear.Discipline.SpecialType == SpecialDisciplineKind.MAG_RETZ ? (CalculationSettings.Default.MagRetz * countStud).ToString() : ""; //рец дисс. /*string disciplineName = reader[4].ToString(); * if (disciplineName.ToLower().Contains("норм") && disciplineName.ToLower().Contains("маг")) * sheet.Cells[rowCounters[sheet], 32 + 23] = countStud * ApplicationSettings.CalculationSettings.NormocontrolMag; * if (disciplineName.ToLower().Contains("доп") && disciplineName.ToLower().Contains("маг")) * sheet.Cells[rowCounters[sheet], 32 + 23] = countStud * ApplicationSettings.CalculationSettings.DopuskDissMag;*/ sheet.Cells[rowCounters[sheet], 32 + 23] = disciplineWorkload.DisciplineYear.Discipline.SpecialType == SpecialDisciplineKind.MAG_RUK ? (CalculationSettings.Default.MAGRuk * countStud).ToString() : "";//рук маг //sheet.Cells[rowCounters[sheet], 31 + 23] = Convert.ToBoolean(reader[29]) ? (countStud * ApplicationSettings.CalculationSettings.AspRuk) : 0f; /*if (disciplineName.ToLower().Contains("норм") && disciplineName.ToLower().Contains("маг")) * sheet.Cells[rowCounters[sheet], 32 + 23] = countStud * ApplicationSettings.CalculationSettings.NormocontrolMag; * if (disciplineName.ToLower().Contains("доп") && disciplineName.ToLower().Contains("маг")) * sheet.Cells[rowCounters[sheet], 32 + 23] = countStud * ApplicationSettings.CalculationSettings.DopuskDissMag;*/ rowCounters[sheet]++; }
public void AddOrUpdateDisciplineWorkload(DisciplineWorkload workload) { using (var scope = Db.BeginWork()) { var discipline = workload.DisciplineYear; if (discipline != null) { workload.DisciplineYearId = discipline.Id; } workload.DisciplineYear = null; var group = workload.Group; if (group != null) { workload.GroupId = group.Id; } workload.Group = null; var semester = workload.Semester; if (semester != null) { workload.SemesterId = semester.Id; } workload.Semester = null; var studyYear = workload.StudyYear; if (studyYear != null) { workload.StudyYearId = studyYear.Id; } workload.StudyYear = null; _disciplineWorkloadRepository.AddOrUpdate(workload); scope.SaveChanges(); workload.DisciplineYear = discipline; workload.Group = group; workload.Semester = semester; workload.StudyYear = studyYear; } }
public NormalizedWorkload(DisciplineWorkload disciplineWorkload) { var year = disciplineWorkload.DisciplineYear; var students = disciplineWorkload.Group.CountOfStudents; var weeks = disciplineWorkload.Semester.CountOfWeeks; var settings = Properties.CalculationSettings.Default; var studyForm = disciplineWorkload.Group.StudyForm; LectureCost = year.CountOfLecture * weeks * settings.LectureCost; PracticeCost = year.CountOfPractice * weeks * settings.PracticeCost; LabsCost = year.CountOfLabs * weeks * settings.LabCost; LearningConsultationCost = year.CountOfLecture * weeks * settings.KonsCost; if (studyForm != StudyForm.FullTime) { LearningConsultationCost *= 3; } ExamConsultationCost = year.HasEx ? settings.ExamConsCost : 0; //ExamControlCost = studyForm.FullTime? students * settings.ExamControlCost : students * settings.RGR; //Откуда 0.4f??? ExamControlCost = year.HasEx ? (studyForm == StudyForm.FullTime ? students * settings.ExamControlCost : students * 0.4f):0; ZachControlCost = year.HasCR ? students * settings.ZachCost:0; KRControlCost = year.HasKR? settings.KRCost * students:0; KPControlCost = year.HasKP ? settings.KPCost * students : 0; switch (year.Discipline.SpecialType) { case SpecialDisciplineKind.GEK: GEKControlCost = year.Discipline.SpecialType == SpecialDisciplineKind.GEK ? settings.GEK * students : 0; break; case SpecialDisciplineKind.MAG_RETZ: RetzMagDissCost = settings.MagRetz * students; break; case SpecialDisciplineKind.GAK: GAKControlCost = settings.GAK * students; break; /* case SpecialDisciplineKind.LearningPractice: * LearningPracticeCost = settings.UchPr * year.CountOfLearnigPracticeWeeks; * break; * case SpecialDisciplineKind.ManufacturePractice: * LearningPracticeCost = settings.PrPr * year.CountOfManufacturePracticeWeeks; * break; * case SpecialDisciplineKind.UndergraduatePractice: * LearningPracticeCost = settings.PreddipPr * students; * break;*/ case SpecialDisciplineKind.BAK_RUK: BachelorVKRRukCost = settings.DPruk * students; break; case SpecialDisciplineKind.MAG_RUK: MagistracyVKRRukCost = settings.MAGRuk * students; break; case SpecialDisciplineKind.ASP_RUK: AspNIIRRukCost = settings.AspRuk * students; break; case SpecialDisciplineKind.RUK_KAF: AspNIIRRukCost = settings.RukKaf; break; default: break; } }
public static float GetWorkloadCost(DisciplineWorkload workload) { DisciplineYear disciplineYear = workload.DisciplineYear; Group group = workload.Group; Semester semester = workload.Semester; float workloadCost = 0; workloadCost += CalculationSettings.Default.LectureCost * disciplineYear.CountOfLecture * semester.CountOfWeeks; workloadCost += CalculationSettings.Default.LabCost * disciplineYear.CountOfLabs * semester.CountOfWeeks; workloadCost += CalculationSettings.Default.PracticeCost * disciplineYear.CountOfPractice * semester.CountOfWeeks; //Расчет консультаций по дисциплине if (group.StudyForm == StudyForm.FullTime)//очно { workloadCost += CalculationSettings.Default.KonsCost * disciplineYear.CountOfLecture * semester.CountOfWeeks; } else { workloadCost += CalculationSettings.Default.KonsCost * 3 * disciplineYear.CountOfLecture * semester.CountOfWeeks; } if (disciplineYear.HasKR) { workloadCost += CalculationSettings.Default.KRCost * group.CountOfStudents; } if (disciplineYear.HasKP) { workloadCost += CalculationSettings.Default.KPCost * group.CountOfStudents; } if (disciplineYear.HasEx) { if (group.StudyForm == StudyForm.FullTime) { workloadCost += CalculationSettings.Default.ExamControlCost * group.CountOfStudents + 2; } else { workloadCost += 0.4f * group.CountOfStudents + 2; } } if (disciplineYear.HasCR) { workloadCost += CalculationSettings.Default.ZachCost * group.CountOfStudents; } workloadCost += CalculationSettings.Default.UchPr * disciplineYear.CountOfLearnigPracticeWeeks; workloadCost += CalculationSettings.Default.PrPr * disciplineYear.CountOfManufacturePracticeWeeks; workloadCost += CalculationSettings.Default.NIIR * disciplineYear.CountOfNIIR * group.CountOfStudents; switch (disciplineYear.Discipline.SpecialType) { case SpecialDisciplineKind.ASP_RUK: workloadCost += CalculationSettings.Default.AspRuk; break; case SpecialDisciplineKind.GEK: workloadCost += CalculationSettings.Default.GEK * group.CountOfStudents * 6; break; case SpecialDisciplineKind.GAK: workloadCost += CalculationSettings.Default.GAK * group.CountOfStudents * 6; break; case SpecialDisciplineKind.BAK_RUK: workloadCost += CalculationSettings.Default.DPruk; break; default: break; } return(workloadCost); }
public bool ImportDataFromExcel(string path, int year) { xlApp = new Excel.Application(); xlWorkBook = xlApp.Workbooks.Open(path, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); //Проход по обоим листам if (_studyYear == null) { if (_studyYears.FirstOrDefault(s => s.Year == year) == null) { _studyYear = new StudyYear { Year = year } } ; else { _studyYear = _studyYears.FirstOrDefault(s => s.Year == year); } } string semester = path.Split('_').LastOrDefault()?.Split('.').FirstOrDefault(); if (semester == null) { Log.Add($"ФАТАЛЬНО: В конце имени файла не сожержится информация о номере семестра"); return(false); } xlWorkSheet = xlWorkBook.Worksheets[1]; int counter = Properties.Import.Default.StartRow; while (xlWorkSheet.GetCellText(counter, Properties.Import.Default.Department) != "") { var department = xlWorkSheet.GetCellText(counter, Properties.Import.Default.Department); if (department != "ПО") { counter++; continue; } string specialityName = "ПИН.РИС"; string disciplineName = xlWorkSheet.GetCellText(counter, Properties.Import.Default.Discipline); int lectures = xlWorkSheet.GetCellText(counter, Properties.Import.Default.Lectures) != "" ? Convert.ToInt32(xlWorkSheet.GetCellText(counter, Properties.Import.Default.Lectures)) : 0; int labs = xlWorkSheet.GetCellText(counter, Properties.Import.Default.Labs) != "" ? Convert.ToInt32(xlWorkSheet.GetCellText(counter, Properties.Import.Default.Labs)) : 0; int practices = xlWorkSheet.GetCellText(counter, Properties.Import.Default.Practicies) != "" ? Convert.ToInt32(xlWorkSheet.GetCellText(counter, Properties.Import.Default.Practicies)) : 0; bool kr = xlWorkSheet.GetCellText(counter, Properties.Import.Default.KR) != ""; bool kp = xlWorkSheet.GetCellText(counter, Properties.Import.Default.KP) != ""; bool ekz = xlWorkSheet.GetCellText(counter, Properties.Import.Default.EKZ) != ""; bool zach = xlWorkSheet.GetCellText(counter, Properties.Import.Default.ZACH) != ""; Discipline discipline = _allDisciplines.FirstOrDefault(d => d.Name == disciplineName); if (discipline == null) { discipline = _newDisciplines.FirstOrDefault(d => d.Name == disciplineName); if (discipline == null) { bool isSpecial = !(kr || kp || ekz || zach); bool hasWeeks = lectures + labs + practices != 0; PracticeKind?type = null; if (!hasWeeks && isSpecial)//выбрасываем всё кроме практик и учебных дисциплин { counter++; continue; } else if (isSpecial) { type = GetSpecial(disciplineName);//определяем тип практики } discipline = new Discipline { Department = _defaultDepartment, Name = disciplineName, PracticeType = type, TypeOfDiscipline = type == null ? DisciplineType.EASY : DisciplineType.PRACTICE }; _newDisciplines.Add(discipline); Log.Add($"Неизвестная дисциплина:'[{discipline.Name}]'"); } } DisciplineYear disciplineYear = new DisciplineYear { Discipline = discipline }; disciplineYear.CountOfLecture = lectures; disciplineYear.CountOfPractice = practices; disciplineYear.CountOfLabs = labs; disciplineYear.HasKR = kr; disciplineYear.HasKP = kp; disciplineYear.HasEx = ekz; disciplineYear.HasCR = zach; _disciplineYears.Add(disciplineYear); int course = 1; if (semester != "") { course = (int)Math.Ceiling(Convert.ToInt32(semester) / 2f); } int entryYear = (Convert.ToInt32(year) - course + 1); DisciplineWorkload workload = new DisciplineWorkload { DisciplineYear = disciplineYear, Semester = _semesters.FirstOrDefault(s => s.Number == Convert.ToInt32(semester)) }; if (workload.Semester == null) { Log.Add($"ФАТАЛЬНО: Не найден семестр {semester}. Строка {counter}"); return(false); } workload.StudyYear = _studyYear; var gr = _groups.FirstOrDefault(g => g.EntryYear == entryYear && g.Speciality.Name == specialityName); if (gr == null) { var speciality = _specialities.FirstOrDefault(s => s.Name == specialityName); if (speciality == null) { Log.Add($"ФАТАЛЬНО: Не найдена специальность {specialityName}. Строка {counter}"); return(false); } if ((gr = _newGroups.FirstOrDefault(g => g.Speciality == speciality && g.EntryYear == entryYear)) == null) { _newGroups.Add(gr = new Group { EntryYear = entryYear, Name = $"{specialityName}{entryYear}", Speciality = speciality }); } Log.Add($"Неизвестная группа {specialityName} поступившая в {entryYear} год. Строка {counter}"); } workload.Group = gr; _workloads.Add(workload); counter++; } xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); ReleaseObject(xlWorkSheet); ReleaseObject(xlWorkBook); ReleaseObject(xlApp); return(true); }