SUPPORT-93339: Fix
This commit is contained in:
parent
22ffb8a866
commit
007a06258b
2 changed files with 32 additions and 28 deletions
|
|
@ -1,24 +1,26 @@
|
|||
package ervu.service.fileupload;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.http.HttpClient;
|
||||
import java.net.http.HttpRequest;
|
||||
import java.net.http.HttpResponse;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.sql.Timestamp;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.google.gson.Gson;
|
||||
import ervu.client.fileupload.WebDavClient;
|
||||
import ervu.model.fileupload.*;
|
||||
import ervu.model.fileupload.DownloadResponse;
|
||||
import ervu.model.fileupload.EmployeeInfoFileFormType;
|
||||
import ervu.model.fileupload.EmployeeInfoKafkaMessage;
|
||||
import ervu.model.fileupload.FileInfo;
|
||||
import ervu.model.fileupload.FileStatus;
|
||||
import ervu.model.fileupload.UploadOrgInfo;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
|
|
@ -40,8 +42,6 @@ import org.springframework.beans.factory.annotation.Value;
|
|||
import org.springframework.context.support.MessageSourceAccessor;
|
||||
import org.springframework.kafka.annotation.KafkaListener;
|
||||
import org.springframework.kafka.core.KafkaTemplate;
|
||||
import org.springframework.kafka.support.Acknowledgment;
|
||||
import org.springframework.messaging.handler.annotation.Header;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.w3c.dom.Document;
|
||||
|
|
@ -50,7 +50,6 @@ import ru.micord.ervu.audit.service.AuditService;
|
|||
import ru.micord.ervu.exception.JsonParsingException;
|
||||
import ru.micord.ervu.kafka.service.ReplyingKafkaService;
|
||||
import ru.micord.ervu.security.esia.config.EsiaConfig;
|
||||
import ru.micord.ervu.security.esia.exception.EsiaException;
|
||||
import ru.micord.ervu.security.esia.model.EmployeeModel;
|
||||
import ru.micord.ervu.security.esia.model.MchdInfoModel;
|
||||
import ru.micord.ervu.security.esia.model.PersonModel;
|
||||
|
|
@ -66,7 +65,6 @@ import ru.cg.webbpm.modules.core.runtime.api.LocalizedException;
|
|||
import ru.cg.webbpm.modules.core.runtime.api.MessageBundleUtils;
|
||||
|
||||
import static ervu.enums.FileStatusCode.FILE_ACCEPTED;
|
||||
import static ervu.enums.FileStatusCode.FILE_CLEAN;
|
||||
import static ervu.enums.FileStatusCode.FILE_INFECTED;
|
||||
import static ervu.enums.FileStatusCode.FILE_NOT_CHECKED;
|
||||
import static ervu.enums.FileStatusCode.FILE_UPLOADED;
|
||||
|
|
@ -214,6 +212,8 @@ public class EmployeeInfoFileUploadService {
|
|||
catch (JsonProcessingException e) {
|
||||
fileStatus.setCode(FILE_NOT_CHECKED.getCode());
|
||||
fileStatus.setStatus("Невозможно проверить файл ЛК РП");
|
||||
fileStatus.setDescription(
|
||||
"Невозможно проверить файл по причине недоступности или ошибки в работе антивируса");
|
||||
interactionService.updateStatus(fileInfo.getFileId(), fileInfo.getFileStatus().getStatus(),
|
||||
uploadOrgInfo.getOrgId()
|
||||
);
|
||||
|
|
@ -228,6 +228,7 @@ public class EmployeeInfoFileUploadService {
|
|||
catch (Exception e) {
|
||||
fileStatus.setCode(FILE_NOT_CHECKED.getCode());
|
||||
fileStatus.setStatus("Некорректная ЭП");
|
||||
fileStatus.setDescription("Не пройдена проверка ЭП");
|
||||
Arrays.stream(downloadResponse.filesInfo())
|
||||
.forEach(fileInfo1 -> fileInfo1.setFileStatus(fileStatus));
|
||||
|
||||
|
|
@ -241,8 +242,7 @@ public class EmployeeInfoFileUploadService {
|
|||
}
|
||||
|
||||
return validateSignerAndMchd(verifyDocumentSignResponse, chiefModel, uploadOrgInfo,
|
||||
mchdFile, accessToken, fileStatus, fileInfo, signFileInfo, mchdFileInfo,
|
||||
now, fio, ervuId, employeeInfoFileFormType, response
|
||||
mchdFile, accessToken, fileStatus, fileInfo, signFileInfo, mchdFileInfo, ervuId, response
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -314,8 +314,7 @@ public class EmployeeInfoFileUploadService {
|
|||
private boolean validateSignerAndMchd(VerifyDocumentSignResponse verifyDocumentSignResponse,
|
||||
EmployeeModel chiefModel, UploadOrgInfo uploadOrgInfo, MultipartFile mchdFile,
|
||||
String accessToken, FileStatus fileStatus, FileInfo fileInfo, FileInfo signFileInfo,
|
||||
FileInfo mchdFileInfo, LocalDateTime now, String fio, String ervuId,
|
||||
EmployeeInfoFileFormType formType, String response) {
|
||||
FileInfo mchdFileInfo, String ervuId, String response) {
|
||||
|
||||
String signerInfo = verifyDocumentSignResponse.getSignerInfo();
|
||||
Map<String, String> signerInfoMap = parseKeyValuePairs(signerInfo);
|
||||
|
|
@ -330,13 +329,13 @@ public class EmployeeInfoFileUploadService {
|
|||
signerInfoMap.get("O").equalsIgnoreCase(uploadOrgInfo.getOrgName());
|
||||
|
||||
if (isSignerValid) {
|
||||
interactionService.updateStatus(fileInfo.getFileId(), "Направлено в ЕРВУ", ervuId);
|
||||
sendMessage(response);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (mchdFile == null) {
|
||||
handleMchdValidationError(fileStatus, uploadOrgInfo, fileInfo, signFileInfo, null,
|
||||
now, fio, ervuId, formType, response
|
||||
handleMchdValidationError(fileStatus, uploadOrgInfo, fileInfo, signFileInfo, null, ervuId, response
|
||||
);
|
||||
throw new LocalizedException("mchd_null", MESSAGE_SOURCE);
|
||||
}
|
||||
|
|
@ -345,28 +344,25 @@ public class EmployeeInfoFileUploadService {
|
|||
validateMchd(mchdFile, accessToken, signerInfoMap.get("SN") + " " + signerInfoMap.get("G"),
|
||||
chiefFirstName, chiefLastName, chiefMiddleName
|
||||
);
|
||||
interactionService.updateStatus(fileInfo.getFileId(), "Направлено в ЕРВУ", ervuId);
|
||||
sendMessage(response);
|
||||
return true;
|
||||
}
|
||||
catch (Exception e) {
|
||||
handleMchdValidationError(fileStatus, uploadOrgInfo, fileInfo, signFileInfo, mchdFileInfo,
|
||||
now, fio, ervuId, formType, response
|
||||
handleMchdValidationError(fileStatus, uploadOrgInfo, fileInfo, signFileInfo, mchdFileInfo, ervuId, response
|
||||
);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
private void handleMchdValidationError(FileStatus fileStatus, UploadOrgInfo uploadOrgInfo,
|
||||
FileInfo fileInfo, FileInfo signFileInfo, FileInfo mchdFileInfo, LocalDateTime now,
|
||||
String fio, String ervuId, EmployeeInfoFileFormType formType, String response) {
|
||||
FileInfo fileInfo, FileInfo signFileInfo, FileInfo mchdFileInfo, String ervuId, String response) {
|
||||
|
||||
fileStatus.setCode(FILE_NOT_CHECKED.getCode());
|
||||
fileStatus.setStatus("Некорректная МЧД");
|
||||
fileStatus.setDescription("Проверка МЧД не пройдена");
|
||||
|
||||
interactionService.setStatus(fileInfo.getFileId(), fileStatus.getStatus(),
|
||||
fileInfo.getFileName(), formType.getFilePatternCode(), Timestamp.valueOf(now),
|
||||
fio, ervuId
|
||||
);
|
||||
interactionService.updateStatus(fileInfo.getFileId(), fileStatus.getStatus(), ervuId);
|
||||
|
||||
FileInfo[] fileInfos = mchdFileInfo != null ?
|
||||
new FileInfo[] {fileInfo, signFileInfo, mchdFileInfo} :
|
||||
|
|
|
|||
|
|
@ -1,4 +1,12 @@
|
|||
kafka_reply_timeout=Превышено время ожидания ответа от сервера.
|
||||
access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА
|
||||
login_attempts_exceeded=Слишком большое количество попыток авторизоваться в ЕСИА за короткий промежуток времени. Рекомендуем почистить cookie и cash браузера, после повторить авторизацию.
|
||||
crl_certificate_expired=Превышено время ожидания ответа из ЕСИА
|
||||
crl_certificate_expired=Превышено время ожидания ответа из ЕСИА
|
||||
file_sign_validate=Ошибка проверки файлов. Некорректная электронная подпись
|
||||
mchd_validate_agent=Ошибка проверки файлов. Некорректная машиночитаемая доверенность. Представитель не совпадает с подписантом
|
||||
mchd_null=Ошибка проверки файлов. Отсутствует машиночитаемая доверенность. Подписант не является руководителем организации
|
||||
mchd_expired=Ошибка проверки файлов. Недействующая машиночитаемая доверенность.
|
||||
mchd_tree_expired=Ошибка проверки файлов. Одна из родительский доверенностей недействующая.
|
||||
mchd_validate_principal=Ошибка проверки файлов. Некорректная машиночитаемая доверенность. Доверитель не совпадает с руководителем организации
|
||||
av_file_infected=Ошибка проверки файлов. Файлы заражены вирусом
|
||||
mchd_cant_parse=Ошибка проверки файлов. Некорректный формат машиночитаемой доверенности
|
||||
Loading…
Add table
Add a link
Reference in a new issue