From c512f99e321ed8ac99318c309ca542269139d50f Mon Sep 17 00:00:00 2001 From: Eduard Tihomirov Date: Fri, 5 Sep 2025 15:09:52 +0300 Subject: [PATCH] SUPPORT-9339: Fix --- .../ervu/client/fileupload/WebDavClient.java | 7 ++++++- .../ervu/exception/FileUploadException.java | 19 +++++++++++++++++++ .../EmployeeInfoFileUploadService.java | 10 +++++----- .../ervu/kafka/ReplyingKafkaConfig.java | 5 ++++- .../esia/service/UlDataServiceImpl.java | 9 +++++++-- .../common_errors_messages.properties | 2 +- .../common_errors_messages_ru_RU.properties | 2 +- 7 files changed, 43 insertions(+), 11 deletions(-) create mode 100644 backend/src/main/java/ervu/exception/FileUploadException.java diff --git a/backend/src/main/java/ervu/client/fileupload/WebDavClient.java b/backend/src/main/java/ervu/client/fileupload/WebDavClient.java index 2250c1bf..3e622ede 100644 --- a/backend/src/main/java/ervu/client/fileupload/WebDavClient.java +++ b/backend/src/main/java/ervu/client/fileupload/WebDavClient.java @@ -13,7 +13,12 @@ import java.net.http.HttpResponse; import java.nio.charset.StandardCharsets; import java.time.Duration; import java.time.ZonedDateTime; -import java.util.*; +import java.util.Arrays; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; diff --git a/backend/src/main/java/ervu/exception/FileUploadException.java b/backend/src/main/java/ervu/exception/FileUploadException.java new file mode 100644 index 00000000..cdddfd7e --- /dev/null +++ b/backend/src/main/java/ervu/exception/FileUploadException.java @@ -0,0 +1,19 @@ +package ervu.exception; + +/** + * @author Eduard Tihomirov + */ +public class FileUploadException extends RuntimeException{ + + public FileUploadException(String message) { + super(message); + } + + public FileUploadException(String message, Throwable cause) { + super(message, cause); + } + + public FileUploadException(Throwable cause) { + super(cause); + } +} diff --git a/backend/src/main/java/ervu/service/fileupload/EmployeeInfoFileUploadService.java b/backend/src/main/java/ervu/service/fileupload/EmployeeInfoFileUploadService.java index 509c3376..8b76fcfd 100644 --- a/backend/src/main/java/ervu/service/fileupload/EmployeeInfoFileUploadService.java +++ b/backend/src/main/java/ervu/service/fileupload/EmployeeInfoFileUploadService.java @@ -15,6 +15,7 @@ import javax.xml.parsers.DocumentBuilderFactory; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import ervu.client.fileupload.WebDavClient; +import ervu.exception.FileUploadException; import ervu.model.fileupload.DownloadResponse; import ervu.model.fileupload.EmployeeInfoFileFormType; import ervu.model.fileupload.EmployeeInfoKafkaMessage; @@ -218,7 +219,7 @@ public class EmployeeInfoFileUploadService { uploadOrgInfo.getOrgId() ); auditService.processUploadEvent(uploadOrgInfo, fileInfos); - throw new RuntimeException(e); + throw new FileUploadException(e); } VerifyDocumentSignResponse verifyDocumentSignResponse; @@ -471,13 +472,13 @@ public class EmployeeInfoFileUploadService { throw new LocalizedException("crl_certificate_expired", MESSAGE_SOURCE); } if (statusCode != 200) { - throw new RuntimeException("Unknown error in verify module. Error code " + errorCode); + throw new FileUploadException("Unknown error in verify module. Error code " + errorCode); } return objectMapper.readValue(body, VerifyDocumentSignResponse.class); } } catch (IOException e) { - throw new RuntimeException("Failed to process sign module response ", e); + throw new FileUploadException("Failed to process sign module response ", e); } } @@ -571,7 +572,6 @@ public class EmployeeInfoFileUploadService { catch (Exception exception) { LOGGER.error("Failed to clear s3", exception); } - } private DownloadResponse processMessageFromAv(String response) throws JsonProcessingException { @@ -591,7 +591,7 @@ public class EmployeeInfoFileUploadService { interactionService.updateStatus(avFile.getFileId(), avFile.getFileStatus().getStatus(), downloadResponse.orgInfo().getOrgId()); auditService.processUploadEvent(downloadResponse.orgInfo(), downloadResponse.filesInfo()); - throw new RuntimeException("File not checked: " + avFile.getFileName()); + throw new FileUploadException("File not checked: " + avFile.getFileName()); } return downloadResponse; } diff --git a/backend/src/main/java/ru/micord/ervu/kafka/ReplyingKafkaConfig.java b/backend/src/main/java/ru/micord/ervu/kafka/ReplyingKafkaConfig.java index d3dfc4ca..3f6df834 100644 --- a/backend/src/main/java/ru/micord/ervu/kafka/ReplyingKafkaConfig.java +++ b/backend/src/main/java/ru/micord/ervu/kafka/ReplyingKafkaConfig.java @@ -12,7 +12,10 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.kafka.annotation.EnableKafka; import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; -import org.springframework.kafka.core.*; +import org.springframework.kafka.core.ConsumerFactory; +import org.springframework.kafka.core.DefaultKafkaConsumerFactory; +import org.springframework.kafka.core.DefaultKafkaProducerFactory; +import org.springframework.kafka.core.ProducerFactory; import org.springframework.kafka.listener.ConcurrentMessageListenerContainer; import org.springframework.kafka.requestreply.CorrelationKey; import org.springframework.kafka.requestreply.ReplyingKafkaTemplate; diff --git a/backend/src/main/java/ru/micord/ervu/security/esia/service/UlDataServiceImpl.java b/backend/src/main/java/ru/micord/ervu/security/esia/service/UlDataServiceImpl.java index 14b6d984..d4214a6b 100644 --- a/backend/src/main/java/ru/micord/ervu/security/esia/service/UlDataServiceImpl.java +++ b/backend/src/main/java/ru/micord/ervu/security/esia/service/UlDataServiceImpl.java @@ -16,8 +16,13 @@ import ru.micord.ervu.security.esia.config.EsiaConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.stereotype.Service; -import ru.micord.ervu.security.esia.exception.EsiaException; -import ru.micord.ervu.security.esia.model.*; +import ru.micord.ervu.security.esia.model.BrhsModel; +import ru.micord.ervu.security.esia.model.EmployeeModel; +import ru.micord.ervu.security.esia.model.EsiaAccessToken; +import ru.micord.ervu.security.esia.model.EsiaHeader; +import ru.micord.ervu.security.esia.model.MchdInfoModel; +import ru.micord.ervu.security.esia.model.OrganizationModel; +import ru.micord.ervu.security.esia.model.PersonModel; /** * @author Eduard Tihomirov diff --git a/backend/src/main/resources/messages/common_errors_messages.properties b/backend/src/main/resources/messages/common_errors_messages.properties index 62293ae7..b7ea549b 100644 --- a/backend/src/main/resources/messages/common_errors_messages.properties +++ b/backend/src/main/resources/messages/common_errors_messages.properties @@ -6,7 +6,7 @@ file_sign_validate=Ошибка проверки файлов. Некоррек mchd_validate_agent=Ошибка проверки файлов. Некорректная машиночитаемая доверенность. Представитель не совпадает с подписантом mchd_null=Ошибка проверки файлов. Отсутствует машиночитаемая доверенность. Подписант не является руководителем организации mchd_expired=Ошибка проверки файлов. Недействующая машиночитаемая доверенность. -mchd_tree_expired=Ошибка проверки файлов. Одна из родительский доверенностей недействующая. +mchd_tree_expired=Ошибка проверки файлов. Одна из родительских доверенностей недействующая. mchd_validate_principal=Ошибка проверки файлов. Некорректная машиночитаемая доверенность. Доверитель не совпадает с руководителем организации av_file_infected=Ошибка проверки файлов. Файлы заражены вирусом mchd_cant_parse=Ошибка проверки файлов. Некорректный формат машиночитаемой доверенности diff --git a/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties b/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties index 17307978..aa81d4e3 100644 --- a/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties +++ b/backend/src/main/resources/messages/common_errors_messages_ru_RU.properties @@ -6,7 +6,7 @@ file_sign_validate=Ошибка проверки файлов. Некоррек mchd_validate_agent=Ошибка проверки файлов. Некорректная машиночитаемая доверенность. Представитель не совпадает с подписантом mchd_null=Ошибка проверки файлов. Отсутствует машиночитаемая доверенность. Подписант не является руководителем организации mchd_expired=Ошибка проверки файлов. Недействующая машиночитаемая доверенность. -mchd_tree_expired=Ошибка проверки файлов. Одна из родительский доверенностей недействующая. +mchd_tree_expired=Ошибка проверки файлов. Одна из родительских доверенностей недействующая. mchd_validate_principal=Ошибка проверки файлов. Некорректная машиночитаемая доверенность. Доверитель не совпадает с руководителем организации av_file_infected=Ошибка проверки файлов. Файлы заражены вирусом mchd_cant_parse=Ошибка проверки файлов. Некорректный формат машиночитаемой доверенности \ No newline at end of file