Merge branch 'feature/SUPPORT-9546_mchd_power' into develop
This commit is contained in:
commit
77d3ae63d0
5 changed files with 28 additions and 10 deletions
|
|
@ -5,10 +5,8 @@ import java.nio.charset.StandardCharsets;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
@ -552,7 +550,10 @@ public class EmployeeInfoFileUploadService {
|
||||||
private void validateMchd(MultipartFile mchdFile, String ogrn, String snils) {
|
private void validateMchd(MultipartFile mchdFile, String ogrn, String snils) {
|
||||||
String mchdGuid;
|
String mchdGuid;
|
||||||
try {
|
try {
|
||||||
mchdGuid = getMchdGuid(mchdFile);
|
mchdGuid = validatePowerAndGetMchdGuid(mchdFile);
|
||||||
|
}
|
||||||
|
catch (LocalizedException e) {
|
||||||
|
throw e;
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
throw new LocalizedException("mchd_cant_parse", MESSAGE_SOURCE);
|
throw new LocalizedException("mchd_cant_parse", MESSAGE_SOURCE);
|
||||||
|
|
@ -611,15 +612,23 @@ public class EmployeeInfoFileUploadService {
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getMchdGuid(MultipartFile mchdFile) throws Exception {
|
private String validatePowerAndGetMchdGuid(MultipartFile mchdFile) throws Exception {
|
||||||
Document doc = DocumentBuilderFactory
|
Document doc = DocumentBuilderFactory
|
||||||
.newInstance()
|
.newInstance()
|
||||||
.newDocumentBuilder()
|
.newDocumentBuilder()
|
||||||
.parse(mchdFile.getInputStream());
|
.parse(mchdFile.getInputStream());
|
||||||
doc.getDocumentElement().normalize();
|
doc.getDocumentElement().normalize();
|
||||||
Node node = doc.getElementsByTagName("СвДов").item(0);
|
Node nodePol = doc.getElementsByTagName("МашПолн").item(0);
|
||||||
if (node != null && node.getAttributes().getNamedItem("НомДовер") != null) {
|
if (nodePol == null || nodePol.getAttributes().getNamedItem("КодПолн") == null
|
||||||
return node.getAttributes().getNamedItem("НомДовер").getNodeValue();
|
|| !nodePol.getAttributes()
|
||||||
|
.getNamedItem("КодПолн")
|
||||||
|
.getNodeValue()
|
||||||
|
.equals(esiaConfig.getEsiaMchdUploadAuthority())) {
|
||||||
|
throw new LocalizedException("mchd_no_sign_rights", MESSAGE_SOURCE);
|
||||||
|
}
|
||||||
|
Node nodeSvDov = doc.getElementsByTagName("СвДов").item(0);
|
||||||
|
if (nodeSvDov != null && nodeSvDov.getAttributes().getNamedItem("НомДовер") != null) {
|
||||||
|
return nodeSvDov.getAttributes().getNamedItem("НомДовер").getNodeValue();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw new FileUploadException("Cannot parse mchd guid");
|
throw new FileUploadException("Cannot parse mchd guid");
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,9 @@ public class EsiaConfig {
|
||||||
@Value("${esia.system.scope: pow_reg, pow_reg_search}")
|
@Value("${esia.system.scope: pow_reg, pow_reg_search}")
|
||||||
private String esiaSystemScope;
|
private String esiaSystemScope;
|
||||||
|
|
||||||
|
@Value("${esia.mchd.upload.authority: GISERVU_LKUL_UPLOAD}")
|
||||||
|
private String esiaMchdUploadAuthority;
|
||||||
|
|
||||||
public String getEsiaOrgScopes() {
|
public String getEsiaOrgScopes() {
|
||||||
String[] scopeItems = esiaOrgScopes.split(",");
|
String[] scopeItems = esiaOrgScopes.split(",");
|
||||||
return String.join(" ", Arrays.stream(scopeItems).map(item -> orgScopeUrl + item.trim()).toArray(String[]::new));
|
return String.join(" ", Arrays.stream(scopeItems).map(item -> orgScopeUrl + item.trim()).toArray(String[]::new));
|
||||||
|
|
@ -161,4 +164,8 @@ public class EsiaConfig {
|
||||||
String[] scopeItems = esiaSystemScope.split(",");
|
String[] scopeItems = esiaSystemScope.split(",");
|
||||||
return String.join(" ", Arrays.stream(scopeItems).map(String::trim).toArray(String[]::new));
|
return String.join(" ", Arrays.stream(scopeItems).map(String::trim).toArray(String[]::new));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getEsiaMchdUploadAuthority() {
|
||||||
|
return esiaMchdUploadAuthority;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ public final class DateUtils {
|
||||||
|
|
||||||
public static ZonedDateTime convertToZoneDateTime(String dateTime) {
|
public static ZonedDateTime convertToZoneDateTime(String dateTime) {
|
||||||
return hasText(dateTime)
|
return hasText(dateTime)
|
||||||
? ZonedDateTime.parse(dateTime, DATE_TIME_FORMATTER)
|
? LocalDateTime.parse(dateTime, DATE_TIME_FORMATTER).atZone(ZoneOffset.UTC)
|
||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,4 +19,5 @@ mchd_tree_expired=У одной из родительских доверенно
|
||||||
mchd_validate_principal=Некорректная машиночитаемая доверенность. Доверенность выдана не той организацией, под которой была осуществлена загрузка файлов.
|
mchd_validate_principal=Некорректная машиночитаемая доверенность. Доверенность выдана не той организацией, под которой была осуществлена загрузка файлов.
|
||||||
av_file_infected=Файлы заражены вирусом
|
av_file_infected=Файлы заражены вирусом
|
||||||
mchd_cant_parse=Некорректный формат машиночитаемой доверенности
|
mchd_cant_parse=Некорректный формат машиночитаемой доверенности
|
||||||
mchd_esia_error=Некорректная машиночитаемая доверенность. Доверенность не найдена.
|
mchd_esia_error=Некорректная машиночитаемая доверенность. Доверенность не найдена.
|
||||||
|
mchd_no_sign_rights=В доверенности (МЧД) нет полномочия "Подписание сведений о воинском учете организации для загрузки в личный кабинет юридических лиц ГИС ЕРВУ"
|
||||||
|
|
@ -19,4 +19,5 @@ mchd_tree_expired=У одной из родительских доверенно
|
||||||
mchd_validate_principal=Некорректная машиночитаемая доверенность. Доверенность выдана не той организацией, под которой была осуществлена загрузка файлов.
|
mchd_validate_principal=Некорректная машиночитаемая доверенность. Доверенность выдана не той организацией, под которой была осуществлена загрузка файлов.
|
||||||
av_file_infected=Файлы заражены вирусом
|
av_file_infected=Файлы заражены вирусом
|
||||||
mchd_cant_parse=Некорректный формат машиночитаемой доверенности
|
mchd_cant_parse=Некорректный формат машиночитаемой доверенности
|
||||||
mchd_esia_error=Некорректная машиночитаемая доверенность. Доверенность не найдена.
|
mchd_esia_error=Некорректная машиночитаемая доверенность. Доверенность не найдена.
|
||||||
|
mchd_no_sign_rights=В доверенности (МЧД) нет полномочия "Подписание сведений о воинском учете организации для загрузки в личный кабинет юридических лиц ГИС ЕРВУ"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue