SUPPORT-9536: Fix

This commit is contained in:
Eduard Tihomiorv 2025-11-05 15:11:13 +03:00
parent 17b2469b2b
commit b251439461
4 changed files with 25 additions and 5 deletions

View file

@ -558,6 +558,9 @@ public class EmployeeInfoFileUploadService {
throw new LocalizedException("mchd_cant_parse", MESSAGE_SOURCE); throw new LocalizedException("mchd_cant_parse", MESSAGE_SOURCE);
} }
MchdInfoModel mchdInfoModel = mchdService.getMchdInfoModel(mchdGuid); MchdInfoModel mchdInfoModel = mchdService.getMchdInfoModel(mchdGuid);
if (mchdInfoModel == null) {
throw new LocalizedException("mchd_esia_error", MESSAGE_SOURCE);
}
LocalDate now = LocalDate.now(); LocalDate now = LocalDate.now();
if (!mchdInfoModel.getStatus().equals("A")) { if (!mchdInfoModel.getStatus().equals("A")) {
throw new LocalizedException("mchd_status_invalid", MESSAGE_SOURCE); throw new LocalizedException("mchd_status_invalid", MESSAGE_SOURCE);

View file

@ -6,6 +6,7 @@ import java.net.http.HttpRequest;
import java.net.http.HttpResponse; import java.net.http.HttpResponse;
import java.time.Duration; import java.time.Duration;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
@ -37,19 +38,22 @@ public class MchdService {
} }
try { try {
HttpResponse<String> response = executeRequest(accessToken, guid); HttpResponse<String> response = executeRequest(accessToken, guid);
if (isEsiaMchdNotFoundError(response)) {
return null;
}
if (response.statusCode() != 200) { if (response.statusCode() != 200) {
if (isNewToken) { if (isNewToken) {
throw new EsiaException(response.statusCode() + " " + response.body()); throw new EsiaException(response.statusCode() + " " + response.body());
} }
accessToken = esiaAuthService.getSystemAccessToken(); accessToken = esiaAuthService.getSystemAccessToken();
response = executeRequest(accessToken, guid); response = executeRequest(accessToken, guid);
if (isEsiaMchdNotFoundError(response)) {
return null;
}
if (response.statusCode() != 200) { if (response.statusCode() != 200) {
throw new EsiaException(response.statusCode() + " " + response.body()); throw new EsiaException(response.statusCode() + " " + response.body());
} }
} }
return objectMapper.readValue(response.body(), MchdInfoModel.class); return objectMapper.readValue(response.body(), MchdInfoModel.class);
} }
catch (Exception e) { catch (Exception e) {
@ -70,4 +74,15 @@ public class MchdService {
.build() .build()
.send(getReq, HttpResponse.BodyHandlers.ofString()); .send(getReq, HttpResponse.BodyHandlers.ofString());
} }
private boolean isEsiaMchdNotFoundError(HttpResponse<String> response)
throws JsonProcessingException {
if (response.statusCode() == 400) {
String errorCode = objectMapper.readTree(response.body())
.get("code")
.asText();
return errorCode.equals("ESIA-044009");
}
return false;
}
} }

View file

@ -18,4 +18,5 @@ mchd_tree_issued_on_invalid=У одной из родительских дове
mchd_tree_expired=У одной из родительских доверенностей не наступил срок действия. Номер доверенности: {0} mchd_tree_expired=У одной из родительских доверенностей не наступил срок действия. Номер доверенности: {0}
mchd_validate_principal=Некорректная машиночитаемая доверенность. Доверенность выдана не той организацией, под которой была осуществлена загрузка файлов. mchd_validate_principal=Некорректная машиночитаемая доверенность. Доверенность выдана не той организацией, под которой была осуществлена загрузка файлов.
av_file_infected=Файлы заражены вирусом av_file_infected=Файлы заражены вирусом
mchd_cant_parse=Некорректный формат машиночитаемой доверенности mchd_cant_parse=Некорректный формат машиночитаемой доверенности
mchd_esia_error=Некорректная машиночитаемая доверенность. Доверенность не найдена.

View file

@ -18,4 +18,5 @@ mchd_tree_issued_on_invalid=У одной из родительских дове
mchd_tree_expired=У одной из родительских доверенностей не наступил срок действия. Номер доверенности: {0} mchd_tree_expired=У одной из родительских доверенностей не наступил срок действия. Номер доверенности: {0}
mchd_validate_principal=Некорректная машиночитаемая доверенность. Доверенность выдана не той организацией, под которой была осуществлена загрузка файлов. mchd_validate_principal=Некорректная машиночитаемая доверенность. Доверенность выдана не той организацией, под которой была осуществлена загрузка файлов.
av_file_infected=Файлы заражены вирусом av_file_infected=Файлы заражены вирусом
mchd_cant_parse=Некорректный формат машиночитаемой доверенности mchd_cant_parse=Некорректный формат машиночитаемой доверенности
mchd_esia_error=Некорректная машиночитаемая доверенность. Доверенность не найдена.