SUPPORT-9339: Fix

This commit is contained in:
Eduard Tihomirov 2025-09-05 15:09:52 +03:00
parent 007a06258b
commit c512f99e32
7 changed files with 43 additions and 11 deletions

View file

@ -13,7 +13,12 @@ import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.time.Duration; import java.time.Duration;
import java.time.ZonedDateTime; 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.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;

View file

@ -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);
}
}

View file

@ -15,6 +15,7 @@ import javax.xml.parsers.DocumentBuilderFactory;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import ervu.client.fileupload.WebDavClient; import ervu.client.fileupload.WebDavClient;
import ervu.exception.FileUploadException;
import ervu.model.fileupload.DownloadResponse; import ervu.model.fileupload.DownloadResponse;
import ervu.model.fileupload.EmployeeInfoFileFormType; import ervu.model.fileupload.EmployeeInfoFileFormType;
import ervu.model.fileupload.EmployeeInfoKafkaMessage; import ervu.model.fileupload.EmployeeInfoKafkaMessage;
@ -218,7 +219,7 @@ public class EmployeeInfoFileUploadService {
uploadOrgInfo.getOrgId() uploadOrgInfo.getOrgId()
); );
auditService.processUploadEvent(uploadOrgInfo, fileInfos); auditService.processUploadEvent(uploadOrgInfo, fileInfos);
throw new RuntimeException(e); throw new FileUploadException(e);
} }
VerifyDocumentSignResponse verifyDocumentSignResponse; VerifyDocumentSignResponse verifyDocumentSignResponse;
@ -471,13 +472,13 @@ public class EmployeeInfoFileUploadService {
throw new LocalizedException("crl_certificate_expired", MESSAGE_SOURCE); throw new LocalizedException("crl_certificate_expired", MESSAGE_SOURCE);
} }
if (statusCode != 200) { 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); return objectMapper.readValue(body, VerifyDocumentSignResponse.class);
} }
} }
catch (IOException e) { 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) { catch (Exception exception) {
LOGGER.error("Failed to clear s3", exception); LOGGER.error("Failed to clear s3", exception);
} }
} }
private DownloadResponse processMessageFromAv(String response) throws JsonProcessingException { private DownloadResponse processMessageFromAv(String response) throws JsonProcessingException {
@ -591,7 +591,7 @@ public class EmployeeInfoFileUploadService {
interactionService.updateStatus(avFile.getFileId(), avFile.getFileStatus().getStatus(), interactionService.updateStatus(avFile.getFileId(), avFile.getFileStatus().getStatus(),
downloadResponse.orgInfo().getOrgId()); downloadResponse.orgInfo().getOrgId());
auditService.processUploadEvent(downloadResponse.orgInfo(), downloadResponse.filesInfo()); auditService.processUploadEvent(downloadResponse.orgInfo(), downloadResponse.filesInfo());
throw new RuntimeException("File not checked: " + avFile.getFileName()); throw new FileUploadException("File not checked: " + avFile.getFileName());
} }
return downloadResponse; return downloadResponse;
} }

View file

@ -12,7 +12,10 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.annotation.EnableKafka; import org.springframework.kafka.annotation.EnableKafka;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; 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.listener.ConcurrentMessageListenerContainer;
import org.springframework.kafka.requestreply.CorrelationKey; import org.springframework.kafka.requestreply.CorrelationKey;
import org.springframework.kafka.requestreply.ReplyingKafkaTemplate; import org.springframework.kafka.requestreply.ReplyingKafkaTemplate;

View file

@ -16,8 +16,13 @@ import ru.micord.ervu.security.esia.config.EsiaConfig;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.micord.ervu.security.esia.exception.EsiaException; import ru.micord.ervu.security.esia.model.BrhsModel;
import ru.micord.ervu.security.esia.model.*; 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 * @author Eduard Tihomirov

View file

@ -6,7 +6,7 @@ file_sign_validate=Ошибка проверки файлов. Некоррек
mchd_validate_agent=Ошибка проверки файлов. Некорректная машиночитаемая доверенность. Представитель не совпадает с подписантом mchd_validate_agent=Ошибка проверки файлов. Некорректная машиночитаемая доверенность. Представитель не совпадает с подписантом
mchd_null=Ошибка проверки файлов. Отсутствует машиночитаемая доверенность. Подписант не является руководителем организации mchd_null=Ошибка проверки файлов. Отсутствует машиночитаемая доверенность. Подписант не является руководителем организации
mchd_expired=Ошибка проверки файлов. Недействующая машиночитаемая доверенность. mchd_expired=Ошибка проверки файлов. Недействующая машиночитаемая доверенность.
mchd_tree_expired=Ошибка проверки файлов. Одна из родительский доверенностей недействующая. mchd_tree_expired=Ошибка проверки файлов. Одна из родительских доверенностей недействующая.
mchd_validate_principal=Ошибка проверки файлов. Некорректная машиночитаемая доверенность. Доверитель не совпадает с руководителем организации mchd_validate_principal=Ошибка проверки файлов. Некорректная машиночитаемая доверенность. Доверитель не совпадает с руководителем организации
av_file_infected=Ошибка проверки файлов. Файлы заражены вирусом av_file_infected=Ошибка проверки файлов. Файлы заражены вирусом
mchd_cant_parse=Ошибка проверки файлов. Некорректный формат машиночитаемой доверенности mchd_cant_parse=Ошибка проверки файлов. Некорректный формат машиночитаемой доверенности

View file

@ -6,7 +6,7 @@ file_sign_validate=Ошибка проверки файлов. Некоррек
mchd_validate_agent=Ошибка проверки файлов. Некорректная машиночитаемая доверенность. Представитель не совпадает с подписантом mchd_validate_agent=Ошибка проверки файлов. Некорректная машиночитаемая доверенность. Представитель не совпадает с подписантом
mchd_null=Ошибка проверки файлов. Отсутствует машиночитаемая доверенность. Подписант не является руководителем организации mchd_null=Ошибка проверки файлов. Отсутствует машиночитаемая доверенность. Подписант не является руководителем организации
mchd_expired=Ошибка проверки файлов. Недействующая машиночитаемая доверенность. mchd_expired=Ошибка проверки файлов. Недействующая машиночитаемая доверенность.
mchd_tree_expired=Ошибка проверки файлов. Одна из родительский доверенностей недействующая. mchd_tree_expired=Ошибка проверки файлов. Одна из родительских доверенностей недействующая.
mchd_validate_principal=Ошибка проверки файлов. Некорректная машиночитаемая доверенность. Доверитель не совпадает с руководителем организации mchd_validate_principal=Ошибка проверки файлов. Некорректная машиночитаемая доверенность. Доверитель не совпадает с руководителем организации
av_file_infected=Ошибка проверки файлов. Файлы заражены вирусом av_file_infected=Ошибка проверки файлов. Файлы заражены вирусом
mchd_cant_parse=Ошибка проверки файлов. Некорректный формат машиночитаемой доверенности mchd_cant_parse=Ошибка проверки файлов. Некорректный формат машиночитаемой доверенности