etreschenkov 2026-01-12 12:57:15 +03:00
parent b79a2d982f
commit c7d22ae3d1
12 changed files with 46 additions and 21 deletions

View file

@ -13,8 +13,8 @@ public class CreditTrackerApplication {
ConfigurableApplicationContext ctx = SpringApplication.run(CreditTrackerApplication.class, args); ConfigurableApplicationContext ctx = SpringApplication.run(CreditTrackerApplication.class, args);
UpdateProcessingPackagesService updateProcessingPackagesService = ctx.getBean(UpdateProcessingPackagesService.class); UpdateProcessingPackagesService updateProcessingPackagesService = ctx.getBean(UpdateProcessingPackagesService.class);
MonitoringService monitoringService = ctx.getBean(MonitoringService.class); MonitoringService monitoringService = ctx.getBean(MonitoringService.class);
// updateProcessingPackagesService.run(); updateProcessingPackagesService.run();
// monitoringService.run(); monitoringService.run();
} }
} }

View file

@ -79,7 +79,8 @@ public class MonitoringRequestValidator {
if (request.getPassword() != null && validationResult.getPassword() == null) { if (request.getPassword() != null && validationResult.getPassword() == null) {
validationResult.setPassword(request.getPassword()); 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()); validationResult.setSignalTypes(request.getSignalTypes());
} }
request.getSubjects().getSubject().clear(); request.getSubjects().getSubject().clear();

View file

@ -32,7 +32,7 @@ public class MonitoringRequest {
protected String packageName; protected String packageName;
@XmlElement(name = "Subjects", required = true) @XmlElement(name = "Subjects", required = true)
protected Subjects subjects; protected Subjects subjects;
protected List<Integer> signalTypes = new ArrayList<>(); protected List<Integer> signalTypes = null;
public Subjects getSubjects() { public Subjects getSubjects() {
if (subjects == null) { if (subjects == null) {
@ -47,6 +47,10 @@ public class MonitoringRequest {
currentSubject = new Subject(); currentSubject = new Subject();
} }
public void createSignalTypes() {
signalTypes = new ArrayList<>();
}
public Subject getCurrentSubject() { public Subject getCurrentSubject() {
return currentSubject; return currentSubject;
} }

View file

@ -26,6 +26,7 @@ public enum SignalError implements IEnumKeyCode {
ERROR_024("024", "Пакет {} отклонен или при его установке произошла ошибка. Удаление невозможно."), ERROR_024("024", "Пакет {} отклонен или при его установке произошла ошибка. Удаление невозможно."),
ERROR_025("025", "Пакет {} уже был удален ранее, удаление невозможно."), ERROR_025("025", "Пакет {} уже был удален ранее, удаление невозможно."),
ERROR_026("026", "Пакет {} обновляется. Удаление невозможно. Дождитесь завершения обновления и повторите попытку."), ERROR_026("026", "Пакет {} обновляется. Удаление невозможно. Дождитесь завершения обновления и повторите попытку."),
ERROR_027("027", "Недопустимое значение в элементе SignalTypes"),
; ;

View file

@ -144,10 +144,10 @@ public class SignalFacadeV3 {
} }
// проверка на уникальность пакета // проверка на уникальность пакета
// if (userPackageService.isPackageNotUnique(userId, packageName)) { if (userPackageService.isPackageNotUnique(userId, packageName)) {
// userPackageService.rejectPackage(userId, packageName, signalTypes); userPackageService.rejectPackage(userId, packageName, signalTypes);
// throw clientExcp(SignalError.ERROR_007, XmlErrorFormat.MonitoringError); throw clientExcp(SignalError.ERROR_007, XmlErrorFormat.MonitoringError);
// } }
Long packageId = userPackageService.registerPackage(userId, packageName, signalTypes); Long packageId = userPackageService.registerPackage(userId, packageName, signalTypes);
LogUtil.addMdcLogKey("%s %d".formatted(packageName, packageId)); LogUtil.addMdcLogKey("%s %d".formatted(packageName, packageId));

View file

@ -31,7 +31,10 @@ public class UserPackageService {
public Long registerPackage(String userId, String packageName, List<Integer> signalTypes) { public Long registerPackage(String userId, String packageName, List<Integer> signalTypes) {
signalTypes.sort(Comparator.naturalOrder()); 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() UserPackage userPackage = UserPackage.builder()
.userId(userId) .userId(userId)
.packageName(packageName) .packageName(packageName)
@ -43,7 +46,10 @@ public class UserPackageService {
} }
public void rejectPackage(String userId, String packageName, List<Integer> signalTypes) { public void rejectPackage(String userId, String packageName, List<Integer> 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() UserPackage userPackage = UserPackage.builder()
.userId(userId) .userId(userId)
.packageName(packageName) .packageName(packageName)

View file

@ -1,5 +1,6 @@
package ru.nbch.credit_tracker.service; package ru.nbch.credit_tracker.service;
import java.util.List;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -51,9 +52,12 @@ public class ValidationService {
throw clientExcp(SignalError.ERROR_002, packageName, XmlErrorFormat.MonitoringError, "Subject"); throw clientExcp(SignalError.ERROR_002, packageName, XmlErrorFormat.MonitoringError, "Subject");
} }
boolean validValues = request.getSignalTypes().stream().allMatch(integer -> integer == 1 || integer == 2); List<Integer> signalTypes = request.getSignalTypes();
if (signalTypes != null) {
boolean validValues = !signalTypes.isEmpty() && signalTypes.stream().allMatch(integer -> integer == 1 || integer == 2);
if (!validValues) { if (!validValues) {
throw clientExcp(SignalError.ERROR_010, packageName, XmlErrorFormat.MonitoringError, "SignalTypes"); throw clientExcp(SignalError.ERROR_027, packageName, XmlErrorFormat.MonitoringError);
}
} }
for (Subject subject : request.getSubjects().getSubject()) { for (Subject subject : request.getSubjects().getSubject()) {

View file

@ -94,7 +94,10 @@ public class PersonServiceV2 {
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
idType2 = null; 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)));
} }
} }

View file

@ -118,8 +118,7 @@ public class PipelinePackageOrchestrator {
} }
userPackageMapper.setLastSearchedDt(packageId); userPackageMapper.setLastSearchedDt(packageId);
log.trace("Signal file by path: {} is completed", res.signalXmlFilePath()); log.trace("Signal file by path: {} is completed", res.signalXmlFilePath());
boolean success = true; boolean success = signalRestService.setupMonitoring(res.signalXmlFilePath());
// signalRestService.setupMonitoring(res.signalXmlFilePath());
if (success) { if (success) {
userPackageMapper.updatePackageOnMonitoringSuccess(packageId, LocalDateTime.now()); userPackageMapper.updatePackageOnMonitoringSuccess(packageId, LocalDateTime.now());
monitoringErrorProcesingService.findErrors(packageId); monitoringErrorProcesingService.findErrors(packageId);

View file

@ -13,7 +13,6 @@ import java.util.Map;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Stream; import java.util.stream.Stream;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.builder.PersonFactoryBuilderV2; import ru.nbch.credit_tracker.builder.PersonFactoryBuilderV2;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
@ -62,11 +61,10 @@ public class FidIdEnricher implements Handler<SubjectPayload, PartFilePayload> {
if (subjectProfile.getIdData() == null) { if (subjectProfile.getIdData() == null) {
Id id = idByFid.get(subjectProfile.getFid()); Id id = idByFid.get(subjectProfile.getFid());
if (id == null) { if (id == null) {
log.warn("Id not found for fid: {}", subjectProfile.getFid());
return Stream.empty(); return Stream.empty();
} }
String normSerNum = CTUtil.normalize(id.getSerNum()); String serNum = CTUtil.normalizePassport(id);
String normIdNum = CTUtil.normalize(id.getIdNum());
String serNum = StringUtils.isNotBlank(normSerNum) ? normSerNum + normIdNum : normIdNum;
IdData idData = IdData.builder() IdData idData = IdData.builder()
.serNum(serNum) .serNum(serNum)
.idType(defineIdType(id.getIdType(), id.getIdType2())) .idType(defineIdType(id.getIdType(), id.getIdType2()))

View file

@ -42,6 +42,8 @@ public class MonitoringRequestStaxReader extends BaseStaxReader<MonitoringReques
switch (currPath) { switch (currPath) {
case "/MonitoringRequest/Subjects/Subject" -> case "/MonitoringRequest/Subjects/Subject" ->
obj.createCurrentSubject(); obj.createCurrentSubject();
case "/MonitoringRequest/SignalTypes" ->
obj.createSignalTypes();
} }
} }
} }

View file

@ -11,6 +11,7 @@ import java.util.regex.Pattern;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import ru.nbch.credit_tracker.entities.app.UserPackage; import ru.nbch.credit_tracker.entities.app.UserPackage;
import ru.nbch.credit_tracker.entities.indic.Id;
@Slf4j @Slf4j
public class CTUtil { public class CTUtil {
@ -79,6 +80,12 @@ public class CTUtil {
return value.replaceAll("[^А-Яа-яA-Za-z0-9]", ""); 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) { public static void createFolder(String folderPath) {
File folder = new File(folderPath); File folder = new File(folderPath);
if (!folder.exists()) { if (!folder.exists()) {