|
|
|
@ -68,7 +68,7 @@ public class EducationsController {
@@ -68,7 +68,7 @@ public class EducationsController {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//Обращение к xlsx-файлу как к Реестру обученных
|
|
|
|
|
XlsxDocumentReestr xlsxEducations = new XlsxDocumentReestr(xlsx); |
|
|
|
|
XlsxDocumentReestr reestr = new XlsxDocumentReestr(xlsx); |
|
|
|
|
|
|
|
|
|
//получение списка студентов из базы
|
|
|
|
|
System.out.println("Получение списка студентов из базы ..."); |
|
|
|
@ -92,118 +92,48 @@ public class EducationsController {
@@ -92,118 +92,48 @@ public class EducationsController {
|
|
|
|
|
base_courses = new ArrayList<>(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//получение списка преподавателей из базы
|
|
|
|
|
System.out.println("Получение списка преподавателей из базы ..."); |
|
|
|
|
List<Teacher> base_teachers; |
|
|
|
|
try { |
|
|
|
|
base_teachers = storage.getBaseTeachers(); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
errors.add("Ошибка при получении списка преподавателей из базы :: " +e.getMessage()); |
|
|
|
|
System.out.println("Не удалось получить список преподавателей из базы: " + e.getMessage()); |
|
|
|
|
base_teachers = new ArrayList<>(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//получение списка программ обучения из базы
|
|
|
|
|
System.out.println("Получение списка программ обучения из базы ..."); |
|
|
|
|
List<Program> base_programs; |
|
|
|
|
try { |
|
|
|
|
base_programs = storage.getBasePrograms(); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
errors.add("Ошибка при получении списка программ обучения из базы :: " +e.getMessage()); |
|
|
|
|
System.out.println("Не удалось получить список программ обучения из базы: " + e.getMessage()); |
|
|
|
|
base_programs = new ArrayList<>(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//получение списка объектов строительства из базы
|
|
|
|
|
System.out.println("Получение списка объектов строительства из базы ..."); |
|
|
|
|
List<Building> base_buildings; |
|
|
|
|
try { |
|
|
|
|
base_buildings = storage.getBaseBuildings(); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
errors.add("Ошибка при получении списка объектов строительства из базы :: " +e.getMessage()); |
|
|
|
|
System.out.println("Не удалось получить список объектов строительства из базы: " + e.getMessage()); |
|
|
|
|
base_buildings = new ArrayList<>(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//получение списка организаций из базы
|
|
|
|
|
System.out.println("Получение списка организаций из базы ..."); |
|
|
|
|
List<Organization> base_organizations; |
|
|
|
|
try { |
|
|
|
|
base_organizations = storage.getBaseOrganizations(); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
errors.add("Ошибка при получении списка организаций из базы :: " +e.getMessage()); |
|
|
|
|
System.out.println("Не удалось получить список организаций из базы: " + e.getMessage()); |
|
|
|
|
base_organizations = new ArrayList<>(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//получение списка записей об обучениях из базы
|
|
|
|
|
System.out.println("Получение списка записей об обучениях из базы ..."); |
|
|
|
|
List<EducatonEntry> base_educations; |
|
|
|
|
try { |
|
|
|
|
base_educations = storage.getBaseEducationEntries(); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
errors.add("Ошибка при получении списка записей об обучениях из базы :: " +e.getMessage()); |
|
|
|
|
System.out.println("Не удалось получить список записей об обучениях из базы: " + e.getMessage()); |
|
|
|
|
base_educations = new ArrayList<>(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//получение списка записей об обучениях из xlsx-файла
|
|
|
|
|
System.out.println("Получение списка записей об обучениях из xlsx-файла ..."); |
|
|
|
|
List<EducatonEntry> xlsx_educations = new ArrayList<>(); |
|
|
|
|
try { |
|
|
|
|
xlsx_educations = xlsxEducations.getEducations(base_courses, base_students, base_teachers, base_programs, base_buildings, base_organizations); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
errors.add("Ошибка при получении списка записей об обучениях из xlsx-файла :: " +e.getMessage()); |
|
|
|
|
System.out.println("Не удалось получить список записей об обучениях из xlsx-файла: " + e.getMessage()); |
|
|
|
|
xlsx_educations = new ArrayList<>(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//фильтрация записей уже присутствующих в базе
|
|
|
|
|
List<EducatonEntry> filtered = new ArrayList<>(); |
|
|
|
|
for (EducatonEntry xlsx_entry : xlsx_educations) { |
|
|
|
|
if (xlsx_entry != null) { |
|
|
|
|
if (xlsx_entry.getStudent() != null |
|
|
|
|
|| xlsx_entry.getCourse() != null) { |
|
|
|
|
if (!filtered.contains(xlsx_entry)) { |
|
|
|
|
boolean exists = false; |
|
|
|
|
for (EducatonEntry base_entry : base_educations) { |
|
|
|
|
if (base_entry.getSertificate_number().equals(xlsx_entry.getSertificate_number()) |
|
|
|
|
&& base_entry.getCourse().getProtocol_number().equals(xlsx_entry.getCourse().getProtocol_number()) |
|
|
|
|
&& base_entry.getCourse().getPlace().equals(xlsx_entry.getCourse().getPlace()) |
|
|
|
|
&& base_entry.getCourse().getStart_date().equals(xlsx_entry.getCourse().getStart_date()) |
|
|
|
|
&& base_entry.getCourse().getTeacher().getFullName().equals(xlsx_entry.getCourse().getTeacher().getFullName()) |
|
|
|
|
&& base_entry.getCourse().getBuilding().getName_short().equals(xlsx_entry.getCourse().getBuilding().getName_short()) |
|
|
|
|
&& base_entry.getCourse().getProgram().getName().equals(xlsx_entry.getCourse().getProgram().getName())) { |
|
|
|
|
|
|
|
|
|
exists = true; |
|
|
|
|
List<EducatonEntry> unique = reestr.getUniqueEducations(); |
|
|
|
|
List<EducatonEntry> absent = storage.getAbsentEducationEntries(unique); |
|
|
|
|
|
|
|
|
|
// удаление строки заголовков из списка записей
|
|
|
|
|
// absent.remove(0);
|
|
|
|
|
|
|
|
|
|
//актуалзация полей согласно базе
|
|
|
|
|
for (EducatonEntry educatonEntry : absent) { |
|
|
|
|
for (Course course : base_courses) { |
|
|
|
|
if (educatonEntry.getCourse() != null |
|
|
|
|
&& course.isSimilar(educatonEntry.getCourse())) { |
|
|
|
|
educatonEntry.setCourse(course); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (!exists) { |
|
|
|
|
filtered.add(xlsx_entry); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for (Student student : base_students) { |
|
|
|
|
if (educatonEntry.getStudent() != null |
|
|
|
|
&& student.isSimilar(educatonEntry.getStudent())) { |
|
|
|
|
educatonEntry.setStudent(student); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//ограничение количества выводимых пользователю записей
|
|
|
|
|
if (filtered.size() > 0) { |
|
|
|
|
if (filtered.size() > 200) { |
|
|
|
|
filtered = filtered.subList(0, 200); |
|
|
|
|
if (absent.size() > 0) { |
|
|
|
|
if (absent.size() > 200) { |
|
|
|
|
absent = absent.subList(0, 200); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
EducationEntryWraper wraper = new EducationEntryWraper(filtered); |
|
|
|
|
EducationEntryWraper wraper = new EducationEntryWraper(absent); |
|
|
|
|
wraper.setCourses(base_courses); |
|
|
|
|
wraper.setStudents(base_students); |
|
|
|
|
|
|
|
|
|
//передача данных в модель
|
|
|
|
|
model.addAttribute("absentReview", new AbsentReview(xlsxEducations, storage)); |
|
|
|
|
model.addAttribute("absentReview", new AbsentReview(reestr, storage)); |
|
|
|
|
model.addAttribute("baseReview", new BaseReview(storage)); |
|
|
|
|
model.addAttribute("xlsxReview", new XlsxReview(xlsxEducations)); |
|
|
|
|
model.addAttribute("xlsxReview", new XlsxReview(reestr)); |
|
|
|
|
model.addAttribute("wrapEducations", wraper); |
|
|
|
|
model.addAttribute("errors", errors); |
|
|
|
|
model.addAttribute("filename", xlsxEducations.getDocument().getName()); |
|
|
|
|
model.addAttribute("filename", reestr.getDocument().getName()); |
|
|
|
|
model.addAttribute("id", id); |
|
|
|
|
// model.addAttribute("xlsx", xlsx.getData());
|
|
|
|
|
// model.addAttribute("headers", xlsx.getHeaders());
|
|
|
|
|