diff --git a/backend/src/main/java/ru/micord/ervu_dashboard/service/XlsParser.java b/backend/src/main/java/ru/micord/ervu_dashboard/service/XlsParser.java index a63fbe94..19bf9f8c 100644 --- a/backend/src/main/java/ru/micord/ervu_dashboard/service/XlsParser.java +++ b/backend/src/main/java/ru/micord/ervu_dashboard/service/XlsParser.java @@ -5,6 +5,7 @@ import java.io.InputStream; import java.util.*; import org.apache.poi.ss.usermodel.*; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import ru.micord.ervu_dashboard.exception.FileUploadException; @@ -15,18 +16,11 @@ import ru.micord.ervu_dashboard.exception.MissingHeaderException; */ @Service public class XlsParser implements FileParser { - private static final List REQUIRED_HEADERS = Arrays.asList( - "Номер", "Номер ЕПГУ", "Источник", "Верхнеуровневый ЛКО", "Категория", "Подкатегория", - "Факт", "Организация, в которую поступило сообщение", - "Организация, в которой находится сообщение", - "Дата поступления", "Дата планируемого завершения работ", - "Дата фактического завершения работ", - "Стадия", "Статус", "Просрочено", "Фаст-трек", "ФЗ", "Тип решения", - "Направлено по email в ФОИВ, не подключенный к ПОС", "Оценка ответа заявителем", - "Повторное рассмотрение", "Организация координатора", "ФИО координатора", - "Организация исполнителя", "ФИО исполнителя", "Организация руководителя", "ФИО руководителя", - "Дата вынесения" - ); + private final List requiredHeaders; + + public XlsParser(@Value("${ERVU_FILE_UPLOAD_XLSX_REQUIRED_HEADERS}")String rawHeaders) { + this.requiredHeaders = getRequiredHeaders(rawHeaders); + } @Override public List> parseFile(MultipartFile file) { @@ -63,7 +57,7 @@ public class XlsParser implements FileParser { } private void validateHeaders(List headers) { - for (String requiredHeader : REQUIRED_HEADERS) { + for (String requiredHeader : requiredHeaders) { if (!headers.contains(requiredHeader)) { throw new MissingHeaderException("Required header is missing:" + requiredHeader); } diff --git a/config/micord.env b/config/micord.env index 7015a160..52c1ca0a 100644 --- a/config/micord.env +++ b/config/micord.env @@ -6,7 +6,14 @@ DB_APP_HOST=10.10.31.119 DB_APP_PORT=5432 DB_APP_NAME=ervu-dashboard-copy -ERVU_FILE_UPLOAD_XLSX_REQUIRED_HEADERS='Номер;Номер ЕПГУ;Источник;Верхнеуровневый ЛКО;Категория;Подкатегория;Факт;Организация, в которую поступило сообщение;Организация, в которой находится сообщение;Дата поступления;Дата планируемого завершения работ;Дата фактического завершения работ;Стадия;Статус;Просрочено;Фаст-трек;ФЗ;Тип решения;Направлено по email в ФОИВ, не подключенный к ПОС;Оценка ответа заявителем;Повторное рассмотрение;Организация координатора;ФИО координатора;Организация исполнителя;ФИО исполнителя;Организация руководителя;ФИО руководителя;' +ERVU_FILE_UPLOAD_XLSX_REQUIRED_HEADERS='Номер;Номер ЕПГУ;Источник;Верхнеуровневый ЛКО;Категория;Подкатегория;Факт;\ +Организация, в которую поступило сообщение;Организация, в которой находится сообщение;\ +Дата поступления;Дата планируемого завершения работ;Дата фактического завершения работ;\ +Стадия;Статус;Просрочено;Фаст-трек;ФЗ;Тип решения;\ +Направлено по email в ФОИВ, не подключенный к ПОС;Оценка ответа заявителем;\ +Повторное рассмотрение;Организация координатора;ФИО координатора;\ +Организация исполнителя;ФИО исполнителя;Организация руководителя;ФИО руководителя;\ +Дата вынесения' ERVU_FILE_UPLOAD_MAX_FILE_SIZE=5242880 ERVU_FILE_UPLOAD_MAX_REQUEST_SIZE=6291456 ERVU_FILE_UPLOAD_FILE_SIZE_THRESHOLD=0 \ No newline at end of file