|
|
|
@ -23,6 +23,7 @@ import ru.mlokoin.gates.model.course.Course;
@@ -23,6 +23,7 @@ import ru.mlokoin.gates.model.course.Course;
|
|
|
|
|
import ru.mlokoin.gates.model.course.CourseWraper; |
|
|
|
|
import ru.mlokoin.gates.model.fs.xlsx.XlsxCell; |
|
|
|
|
import ru.mlokoin.gates.model.fs.xlsx.XlsxDocument; |
|
|
|
|
import ru.mlokoin.gates.model.fs.xlsx.XlsxDocumentReestr; |
|
|
|
|
import ru.mlokoin.gates.model.program.Program; |
|
|
|
|
import ru.mlokoin.gates.model.teacher.Teacher; |
|
|
|
|
import ru.mlokoin.gates.repository.Storage; |
|
|
|
@ -88,81 +89,44 @@ public class CourseController {
@@ -88,81 +89,44 @@ public class CourseController {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Получение курсов из xlsx
|
|
|
|
|
List<Course> xlsx_courses = new ArrayList<>();// 7 столбец
|
|
|
|
|
Map<Integer, List<XlsxCell>> map = xlsx.getData(); |
|
|
|
|
for (Map.Entry<Integer, List<XlsxCell>> entry : map.entrySet()) { |
|
|
|
|
xlsx_courses.add(new Course((Entry<Integer, List<XlsxCell>>) entry, teachers, programs, buildings)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//Получение перечня курсов из базы
|
|
|
|
|
System.out.println("Получение списка курсов из базы ..."); |
|
|
|
|
List<Course> base_courses = storage.getBaseCourses(); |
|
|
|
|
System.out.println("Количество курсов в базе: " + base_courses.size()); |
|
|
|
|
System.out.println("Получение списка курсов из xlsx-файла ..."); |
|
|
|
|
XlsxDocumentReestr reestr = new XlsxDocumentReestr(xlsx); |
|
|
|
|
List<Course> xlsx_courses = reestr.getUniqueCourses(); |
|
|
|
|
|
|
|
|
|
/***************************************************************************************** |
|
|
|
|
* |
|
|
|
|
* Удаление повторяющихся курсов |
|
|
|
|
* - удаляем повторяющиеся курсы в xlsx-файле |
|
|
|
|
* - удаляем курсы, присутствующие в базе |
|
|
|
|
* * |
|
|
|
|
******************************************************************************************/ |
|
|
|
|
System.out.println("Удаляем повторяющиеся в xlsx-файле курсы ..."); |
|
|
|
|
System.out.println("Количество курсов в xlsx_courses: " + xlsx_courses.size()); |
|
|
|
|
List<Course> filtered = new ArrayList<Course>(); |
|
|
|
|
for (Course course : xlsx_courses) { |
|
|
|
|
if (course != null) { |
|
|
|
|
if (course.getStart_date() != null && course.getBuilding() != null && course.getTeacher() != null) { |
|
|
|
|
if (!filtered.contains(course)) { |
|
|
|
|
boolean exists = false; |
|
|
|
|
|
|
|
|
|
//Проверяем наличие курса в базе
|
|
|
|
|
if (base_courses.size() > 0) { |
|
|
|
|
//Сравниваем курс из xlsx-файла с каждой записью в базе
|
|
|
|
|
for (Course base_course : base_courses) { |
|
|
|
|
// номер протокола нулевой, сравниваем курсы по дате начала обучения, объекту строительства, фио преподавателя
|
|
|
|
|
if (course.getProtocol_number() == null || |
|
|
|
|
course.getProtocol_number().isEmpty() || |
|
|
|
|
course.getProtocol_number().equals("")) { |
|
|
|
|
|
|
|
|
|
exists = course.getTeacher().equals(base_course.getTeacher()) |
|
|
|
|
&& course.getProgram().equals(base_course.getProgram()) |
|
|
|
|
&& course.getPlace().equals(base_course.getPlace()) |
|
|
|
|
&& course.getStart_date().equals(base_course.getStart_date()); |
|
|
|
|
if (exists) { |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// номер протокола не нулевой, сравниваем курсы по номеру протокола
|
|
|
|
|
else { |
|
|
|
|
exists = course.getProtocol_number().equals(base_course.getProtocol_number()); |
|
|
|
|
if (exists) { |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//Если курс еще не в списке и не существует в базе, добавляем курс в список
|
|
|
|
|
if (!exists) { |
|
|
|
|
filtered.add(course); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//Получение курсов, отсутствующих в базе
|
|
|
|
|
List<Course> absent = storage.getAbsentCourses(xlsx_courses); |
|
|
|
|
System.out.println("Количество уникальных курсов filtered: " + absent.size()); |
|
|
|
|
|
|
|
|
|
//актуализация данных о преподавателях, программах, объектах строительства
|
|
|
|
|
for (Course course : absent) { |
|
|
|
|
for (Teacher teacher : teachers) { |
|
|
|
|
if (course.getTeacher().isSimilar(teacher)) { |
|
|
|
|
course.setTeacher(teacher); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for (Program program : programs) { |
|
|
|
|
if (course.getProgram().isSimilar(program)) { |
|
|
|
|
course.setProgram(program); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for (Building building : buildings) { |
|
|
|
|
if (course.getBuilding().isSimilar(building)) { |
|
|
|
|
course.setBuilding(building); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
System.out.println("Количество уникальных курсов filtered: " + filtered.size()); |
|
|
|
|
|
|
|
|
|
//Передаем курсы в шаблон
|
|
|
|
|
if (filtered.size() > 0) { |
|
|
|
|
if (absent.size() > 0) { |
|
|
|
|
//Ограничиваем количество курсов, подлежащих передаче в wraper
|
|
|
|
|
// System.out.println("Общее количество курсов для добавления в базу: " + filtered.size());
|
|
|
|
|
if (filtered.size() > 200) { |
|
|
|
|
filtered = filtered.subList(0, 200); |
|
|
|
|
if (absent.size() > 200) { |
|
|
|
|
absent = absent.subList(0, 200); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//Создаем wraper для передачи в шаблон
|
|
|
|
|
CourseWraper wraper = new CourseWraper(filtered); |
|
|
|
|
CourseWraper wraper = new CourseWraper(absent); |
|
|
|
|
wraper.addPrograms(programs); |
|
|
|
|
wraper.addBuildings(buildings); |
|
|
|
|
wraper.addTeachers(teachers); |
|
|
|
|