diff --git a/src/main/java/ru/nbch/credit_tracker/CreditTrackerApplication.java b/src/main/java/ru/nbch/credit_tracker/CreditTrackerApplication.java index 98eb392..97b975d 100644 --- a/src/main/java/ru/nbch/credit_tracker/CreditTrackerApplication.java +++ b/src/main/java/ru/nbch/credit_tracker/CreditTrackerApplication.java @@ -13,8 +13,8 @@ public class CreditTrackerApplication { ConfigurableApplicationContext ctx = SpringApplication.run(CreditTrackerApplication.class, args); UpdateProcessingPackagesService updateProcessingPackagesService = ctx.getBean(UpdateProcessingPackagesService.class); MonitoringService monitoringService = ctx.getBean(MonitoringService.class); -// updateProcessingPackagesService.run(); -// monitoringService.run(); + updateProcessingPackagesService.run(); + monitoringService.run(); } } diff --git a/src/main/java/ru/nbch/credit_tracker/component/MonitoringRequestValidator.java b/src/main/java/ru/nbch/credit_tracker/component/MonitoringRequestValidator.java index 81c0dd1..3f31476 100644 --- a/src/main/java/ru/nbch/credit_tracker/component/MonitoringRequestValidator.java +++ b/src/main/java/ru/nbch/credit_tracker/component/MonitoringRequestValidator.java @@ -79,7 +79,8 @@ public class MonitoringRequestValidator { if (request.getPassword() != null && validationResult.getPassword() == null) { validationResult.setPassword(request.getPassword()); } - if (!request.getSignalTypes().isEmpty() && validationResult.getSignalTypes().isEmpty()) { + if (request.getSignalTypes() != null && !request.getSignalTypes().isEmpty() + && validationResult.getSignalTypes().isEmpty()) { validationResult.setSignalTypes(request.getSignalTypes()); } request.getSubjects().getSubject().clear(); diff --git a/src/main/java/ru/nbch/credit_tracker/entities/user_request/monitoring_request/MonitoringRequest.java b/src/main/java/ru/nbch/credit_tracker/entities/user_request/monitoring_request/MonitoringRequest.java index 9957ade..69c9c38 100644 --- a/src/main/java/ru/nbch/credit_tracker/entities/user_request/monitoring_request/MonitoringRequest.java +++ b/src/main/java/ru/nbch/credit_tracker/entities/user_request/monitoring_request/MonitoringRequest.java @@ -32,7 +32,7 @@ public class MonitoringRequest { protected String packageName; @XmlElement(name = "Subjects", required = true) protected Subjects subjects; - protected List signalTypes = new ArrayList<>(); + protected List signalTypes = null; public Subjects getSubjects() { if (subjects == null) { @@ -47,6 +47,10 @@ public class MonitoringRequest { currentSubject = new Subject(); } + public void createSignalTypes() { + signalTypes = new ArrayList<>(); + } + public Subject getCurrentSubject() { return currentSubject; } diff --git a/src/main/java/ru/nbch/credit_tracker/enums/SignalError.java b/src/main/java/ru/nbch/credit_tracker/enums/SignalError.java index 0cde045..9defdab 100644 --- a/src/main/java/ru/nbch/credit_tracker/enums/SignalError.java +++ b/src/main/java/ru/nbch/credit_tracker/enums/SignalError.java @@ -26,6 +26,7 @@ public enum SignalError implements IEnumKeyCode { ERROR_024("024", "Пакет {} отклонен или при его установке произошла ошибка. Удаление невозможно."), ERROR_025("025", "Пакет {} уже был удален ранее, удаление невозможно."), ERROR_026("026", "Пакет {} обновляется. Удаление невозможно. Дождитесь завершения обновления и повторите попытку."), + ERROR_027("027", "Недопустимое значение в элементе SignalTypes"), ; diff --git a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java index 04da2a8..ca1cffa 100644 --- a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java +++ b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java @@ -144,10 +144,10 @@ public class SignalFacadeV3 { } // проверка на уникальность пакета -// if (userPackageService.isPackageNotUnique(userId, packageName)) { -// userPackageService.rejectPackage(userId, packageName, signalTypes); -// throw clientExcp(SignalError.ERROR_007, XmlErrorFormat.MonitoringError); -// } + if (userPackageService.isPackageNotUnique(userId, packageName)) { + userPackageService.rejectPackage(userId, packageName, signalTypes); + throw clientExcp(SignalError.ERROR_007, XmlErrorFormat.MonitoringError); + } Long packageId = userPackageService.registerPackage(userId, packageName, signalTypes); LogUtil.addMdcLogKey("%s %d".formatted(packageName, packageId)); diff --git a/src/main/java/ru/nbch/credit_tracker/service/UserPackageService.java b/src/main/java/ru/nbch/credit_tracker/service/UserPackageService.java index 8850696..48ae056 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/UserPackageService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/UserPackageService.java @@ -31,7 +31,10 @@ public class UserPackageService { public Long registerPackage(String userId, String packageName, List signalTypes) { signalTypes.sort(Comparator.naturalOrder()); - String types = signalTypes.stream().map(Object::toString).collect(Collectors.joining(",")); + String types = "1,2"; + if (!signalTypes.isEmpty()) { + types = signalTypes.stream().map(Object::toString).distinct().collect(Collectors.joining(",")); + } UserPackage userPackage = UserPackage.builder() .userId(userId) .packageName(packageName) @@ -43,7 +46,10 @@ public class UserPackageService { } public void rejectPackage(String userId, String packageName, List signalTypes) { - String types = signalTypes.stream().map(Object::toString).collect(Collectors.joining(",")); + String types = "1,2"; + if (!signalTypes.isEmpty()) { + types = signalTypes.stream().map(Object::toString).distinct().collect(Collectors.joining(",")); + } UserPackage userPackage = UserPackage.builder() .userId(userId) .packageName(packageName) diff --git a/src/main/java/ru/nbch/credit_tracker/service/ValidationService.java b/src/main/java/ru/nbch/credit_tracker/service/ValidationService.java index 8c10bd4..03d3266 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/ValidationService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/ValidationService.java @@ -1,5 +1,6 @@ package ru.nbch.credit_tracker.service; +import java.util.List; import java.util.regex.Pattern; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -51,9 +52,12 @@ public class ValidationService { throw clientExcp(SignalError.ERROR_002, packageName, XmlErrorFormat.MonitoringError, "Subject"); } - boolean validValues = request.getSignalTypes().stream().allMatch(integer -> integer == 1 || integer == 2); - if (!validValues) { - throw clientExcp(SignalError.ERROR_010, packageName, XmlErrorFormat.MonitoringError, "SignalTypes"); + List signalTypes = request.getSignalTypes(); + if (signalTypes != null) { + boolean validValues = !signalTypes.isEmpty() && signalTypes.stream().allMatch(integer -> integer == 1 || integer == 2); + if (!validValues) { + throw clientExcp(SignalError.ERROR_027, packageName, XmlErrorFormat.MonitoringError); + } } for (Subject subject : request.getSubjects().getSubject()) { diff --git a/src/main/java/ru/nbch/credit_tracker/service/indic/PersonServiceV2.java b/src/main/java/ru/nbch/credit_tracker/service/indic/PersonServiceV2.java index 3b3bc64..54b52e6 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/indic/PersonServiceV2.java +++ b/src/main/java/ru/nbch/credit_tracker/service/indic/PersonServiceV2.java @@ -94,7 +94,10 @@ public class PersonServiceV2 { } catch (NumberFormatException e) { idType2 = null; } - return (idType != null && idType <= 30 && idType != 12) || (idType2 != null && (idType2 >= 1 || idType2 <= 999)); + String serNum = CTUtil.normalizePassport(p); + return serNum.length() == 10 && + ((idType != null && idType <= 30 && idType != 12) || + (idType2 != null && (idType2 >= 1 && idType2 <= 999))); } } diff --git a/src/main/java/ru/nbch/credit_tracker/service/task/PipelinePackageOrchestrator.java b/src/main/java/ru/nbch/credit_tracker/service/task/PipelinePackageOrchestrator.java index 63a969e..74a7b73 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/task/PipelinePackageOrchestrator.java +++ b/src/main/java/ru/nbch/credit_tracker/service/task/PipelinePackageOrchestrator.java @@ -118,8 +118,7 @@ public class PipelinePackageOrchestrator { } userPackageMapper.setLastSearchedDt(packageId); log.trace("Signal file by path: {} is completed", res.signalXmlFilePath()); - boolean success = true; -// signalRestService.setupMonitoring(res.signalXmlFilePath()); + boolean success = signalRestService.setupMonitoring(res.signalXmlFilePath()); if (success) { userPackageMapper.updatePackageOnMonitoringSuccess(packageId, LocalDateTime.now()); monitoringErrorProcesingService.findErrors(packageId); diff --git a/src/main/java/ru/nbch/credit_tracker/service/task/impl/FidIdEnricher.java b/src/main/java/ru/nbch/credit_tracker/service/task/impl/FidIdEnricher.java index d5b2fc3..72faf81 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/task/impl/FidIdEnricher.java +++ b/src/main/java/ru/nbch/credit_tracker/service/task/impl/FidIdEnricher.java @@ -13,7 +13,6 @@ import java.util.Map; import java.util.UUID; import java.util.stream.Stream; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import ru.nbch.credit_tracker.builder.PersonFactoryBuilderV2; import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; @@ -62,11 +61,10 @@ public class FidIdEnricher implements Handler { if (subjectProfile.getIdData() == null) { Id id = idByFid.get(subjectProfile.getFid()); if (id == null) { + log.warn("Id not found for fid: {}", subjectProfile.getFid()); return Stream.empty(); } - String normSerNum = CTUtil.normalize(id.getSerNum()); - String normIdNum = CTUtil.normalize(id.getIdNum()); - String serNum = StringUtils.isNotBlank(normSerNum) ? normSerNum + normIdNum : normIdNum; + String serNum = CTUtil.normalizePassport(id); IdData idData = IdData.builder() .serNum(serNum) .idType(defineIdType(id.getIdType(), id.getIdType2())) diff --git a/src/main/java/ru/nbch/credit_tracker/service/xml/stax/MonitoringRequestStaxReader.java b/src/main/java/ru/nbch/credit_tracker/service/xml/stax/MonitoringRequestStaxReader.java index a687364..5780ce2 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/xml/stax/MonitoringRequestStaxReader.java +++ b/src/main/java/ru/nbch/credit_tracker/service/xml/stax/MonitoringRequestStaxReader.java @@ -41,7 +41,9 @@ public class MonitoringRequestStaxReader extends BaseStaxReader - obj.createCurrentSubject(); + obj.createCurrentSubject(); + case "/MonitoringRequest/SignalTypes" -> + obj.createSignalTypes(); } } } diff --git a/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java b/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java index 543e0f6..c17e6d7 100644 --- a/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java +++ b/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java @@ -11,6 +11,7 @@ import java.util.regex.Pattern; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import ru.nbch.credit_tracker.entities.app.UserPackage; +import ru.nbch.credit_tracker.entities.indic.Id; @Slf4j public class CTUtil { @@ -79,6 +80,12 @@ public class CTUtil { return value.replaceAll("[^А-Яа-яA-Za-z0-9]", ""); } + public static String normalizePassport(Id id) { + String normSerNum = normalize(id.getSerNum()); + String normIdNum = normalize(id.getIdNum()); + return StringUtils.isNotBlank(normSerNum) ? normSerNum + normIdNum : normIdNum; + } + public static void createFolder(String folderPath) { File folder = new File(folderPath); if (!folder.exists()) {