|
|
@ -22,6 +22,7 @@ import reactor.core.publisher.Mono; |
|
|
|
import ru.mlokoin.gates.model.cretarea.ProgramCretarea; |
|
|
|
import ru.mlokoin.gates.model.cretarea.ProgramCretarea; |
|
|
|
import ru.mlokoin.gates.model.fs.xlsx.XlsxCell; |
|
|
|
import ru.mlokoin.gates.model.fs.xlsx.XlsxCell; |
|
|
|
import ru.mlokoin.gates.model.fs.xlsx.XlsxDocument; |
|
|
|
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.program.Program; |
|
|
|
import ru.mlokoin.gates.model.program.ProgramWraper; |
|
|
|
import ru.mlokoin.gates.model.program.ProgramWraper; |
|
|
|
import ru.mlokoin.gates.repository.Storage; |
|
|
|
import ru.mlokoin.gates.repository.Storage; |
|
|
@ -48,64 +49,51 @@ public class ProgramController { |
|
|
|
System.out.println("Получение перечня программ из xlsx-файла ..."); |
|
|
|
System.out.println("Получение перечня программ из xlsx-файла ..."); |
|
|
|
//получение данных файла в переменную xlsx
|
|
|
|
//получение данных файла в переменную xlsx
|
|
|
|
XlsxDocument xlsx = storage.getXlsxDocument(id); |
|
|
|
XlsxDocument xlsx = storage.getXlsxDocument(id); |
|
|
|
|
|
|
|
XlsxDocumentReestr reestr = new XlsxDocumentReestr(xlsx); |
|
|
|
//список программ из файла
|
|
|
|
//список программ из файла
|
|
|
|
ArrayList<Program> xlsx_programs = new ArrayList<>();//7 столбец
|
|
|
|
List<Program> unique_programs = reestr.getUniquePrograms(); |
|
|
|
Map<Integer, List<XlsxCell>> map = xlsx.getData(); |
|
|
|
|
|
|
|
for (Map.Entry<Integer, List<XlsxCell>> entry : map.entrySet()) { |
|
|
|
//заменяем критерии программ обучения данными из базы
|
|
|
|
Program programm = new Program(); |
|
|
|
//получаем список критериев
|
|
|
|
programm.setName(Stringer.clear(entry |
|
|
|
System.out.println("Подстановка в объект программы критериев из базы ..."); |
|
|
|
.getValue() |
|
|
|
List<ProgramCretarea> base_cretareas = storage.getBaseCretareas(); |
|
|
|
.get(6) |
|
|
|
for (Program program : unique_programs) { |
|
|
|
.getContent())); |
|
|
|
for (ProgramCretarea cretarea : base_cretareas) { |
|
|
|
xlsx_programs.add(programm); |
|
|
|
if (program.getCretarea().isSimilar(cretarea)) { |
|
|
|
|
|
|
|
System.out.println("Найдено совпадение: " + program.getCretarea().getName_short()); |
|
|
|
|
|
|
|
program.setCretarea(cretarea); |
|
|
|
|
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
xlsx_programs.remove(0);//Удалили из списка заголовок
|
|
|
|
|
|
|
|
Set<Program> xlsx_programSet = Set.copyOf(xlsx_programs); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//список уникальных наименований из файла
|
|
|
|
|
|
|
|
System.out.println("Список уникальных сокращенных наименований критериев из файла:"); |
|
|
|
|
|
|
|
Set<String> xlsx_stringSet = new HashSet<>(); |
|
|
|
|
|
|
|
for (Program pc : xlsx_programSet) { |
|
|
|
|
|
|
|
System.out.println(pc.getName()); |
|
|
|
|
|
|
|
xlsx_stringSet.add(pc.getName()); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//Получение перечня программ из базы
|
|
|
|
|
|
|
|
System.out.println("Получение списка программ из базы ..."); |
|
|
|
|
|
|
|
List<Program> base_programs = storage.getBasePrograms(); |
|
|
|
|
|
|
|
Set<Program> base_programSet = Set.copyOf(base_programs); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Список наименований программ из базы
|
|
|
|
|
|
|
|
System.out.println("Список уникальных наименований программ из базы:"); |
|
|
|
|
|
|
|
Set<String> base_stringSet = new HashSet<>(); |
|
|
|
|
|
|
|
for (Program pc : base_programSet) { |
|
|
|
|
|
|
|
System.out.println(pc.getName()); |
|
|
|
|
|
|
|
base_stringSet.add(pc.getName()); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//Удаление программ присутствующих в базе
|
|
|
|
List<Program> absent = storage.getAbsentPrograms(unique_programs); |
|
|
|
xlsx_stringSet.removeAll(base_stringSet); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (xlsx_stringSet.size() != 0) { |
|
|
|
//Подготавлеваем обертку формы
|
|
|
|
//Подготовка списка, для передачи в представление
|
|
|
|
//unique_programs содержит строку заголовков, поэтому проверяем, чтобы было больше одной записи
|
|
|
|
ArrayList<Program> list = new ArrayList<>(); |
|
|
|
if (absent.size() != 0 ) { |
|
|
|
for (String string : xlsx_stringSet) { |
|
|
|
|
|
|
|
Program pc = new Program(); |
|
|
|
|
|
|
|
pc.setName(string); |
|
|
|
//Подготавливаем список направлений обучения для передачи в представление
|
|
|
|
list.add(pc); |
|
|
|
List<String> study_directions = new ArrayList<>(); |
|
|
|
} |
|
|
|
// study_directions.add("направления обучения");
|
|
|
|
|
|
|
|
study_directions.add("Обязательное обучение"); |
|
|
|
|
|
|
|
study_directions.add("Производственное обучение"); |
|
|
|
|
|
|
|
study_directions.add("Профессиональная переподготовка"); |
|
|
|
|
|
|
|
study_directions.add("Обучение водителей"); |
|
|
|
|
|
|
|
study_directions.add("Обучение вновь внедряемым процедурам"); |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* Подготавлеваем обертку формы |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
// передаем список новых программ
|
|
|
|
// передаем список новых программ
|
|
|
|
ProgramWraper pwraper = new ProgramWraper(list); |
|
|
|
ProgramWraper pwraper = new ProgramWraper(); |
|
|
|
|
|
|
|
pwraper.setPrograms(absent); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//подготавливаем список критериев
|
|
|
|
|
|
|
|
List<ProgramCretarea> base_cretareas = storage.getBaseCretareas(); |
|
|
|
|
|
|
|
//передаем список критериев в обертку формы, для селекта
|
|
|
|
//передаем список критериев в обертку формы, для селекта
|
|
|
|
pwraper.setCretareas(base_cretareas); |
|
|
|
pwraper.setCretareas(base_cretareas); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//подготавливаем список направлений обучения
|
|
|
|
|
|
|
|
pwraper.addStudyDirections(study_directions); |
|
|
|
|
|
|
|
|
|
|
|
//передаем обертку в модель
|
|
|
|
//передаем обертку в модель
|
|
|
|
model.addAttribute("wrapPrograms", pwraper); |
|
|
|
model.addAttribute("wrapPrograms", pwraper); |
|
|
|
model.addAttribute("id", id); |
|
|
|
model.addAttribute("id", id); |
|
|
|