Rename all *V2 and *2 classes

This commit is contained in:
Mikhail Trofimov 2026-04-23 16:31:03 +03:00
parent b05b48f800
commit 4cc3f6eb3f
24 changed files with 192 additions and 219 deletions

View file

@ -1,7 +1,5 @@
package ru.nbch.credit_tracker.builder;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import ru.nbch.credit_tracker.entities.external_request.signals.Person;
@ -9,8 +7,11 @@ import ru.nbch.credit_tracker.model.IdData;
import ru.nbch.credit_tracker.model.NameData;
import ru.nbch.credit_tracker.model.SubjectProfile;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
@Slf4j
public class PersonFactoryBuilderV2 {
public class PersonFactoryBuilder {
private final static DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd.MM.yyyy");
private final static String DEFAULT_DATE = "01.01.2000";
@ -31,11 +32,11 @@ public class PersonFactoryBuilderV2 {
private SubjectProfile personData;
public static PersonFactoryBuilderV2 builder() {
return new PersonFactoryBuilderV2();
public static PersonFactoryBuilder builder() {
return new PersonFactoryBuilder();
}
public PersonFactoryBuilderV2 personData(SubjectProfile personData) {
public PersonFactoryBuilder personData(SubjectProfile personData) {
this.personData = personData;
return this;
}

View file

@ -3,12 +3,7 @@ package ru.nbch.credit_tracker.controller;
import org.springframework.core.io.Resource;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import ru.nbch.credit_tracker.config.mdc.ClearMdc;
import ru.nbch.credit_tracker.entities.user_request.active_packages.MonitoringActivePackagesRequest;
@ -21,30 +16,31 @@ import ru.nbch.credit_tracker.entities.user_response.success.MonitoringSetupResp
import ru.nbch.credit_tracker.enums.SignalError;
import ru.nbch.credit_tracker.enums.XmlErrorFormat;
import ru.nbch.credit_tracker.exceptions.SignalException;
import ru.nbch.credit_tracker.facade.SignalFacadeV3;
import ru.nbch.credit_tracker.facade.SignalFacade;
import static ru.nbch.credit_tracker.utils.error.ExceptionUtils.serverExcp;
@RestController
@RequestMapping("/api/v1/signal")
public class SignalControllerV3 {
public class SignalController {
private final SignalFacadeV3 signalFacadeV3;
private final SignalFacade signalFacade;
public SignalControllerV3(SignalFacadeV3 signalFacadeV3) {
this.signalFacadeV3 = signalFacadeV3;
public SignalController(SignalFacade signalFacade) {
this.signalFacade = signalFacade;
}
@PostMapping(value = "/set", produces = MediaType.APPLICATION_XML_VALUE)
@ClearMdc
public ResponseEntity<MonitoringSetupResponse> setupMonitoring(@RequestParam("file") MultipartFile file) {
signalFacadeV3.setupMonitoringRequest(file);
signalFacade.setupMonitoringRequest(file);
return ResponseEntity.ok().body(new MonitoringSetupResponse());
}
@PostMapping(value = "/active_packages", consumes = MediaType.APPLICATION_XML_VALUE, produces = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<MonitoringActivePackagesResponse> findActivePackages(@RequestBody MonitoringActivePackagesRequest activePackagesRequest) {
try {
return signalFacadeV3.findActivePackages(activePackagesRequest);
return signalFacade.findActivePackages(activePackagesRequest);
} catch (Exception e) {
throwOrWrap(SignalError.ERROR_013, XmlErrorFormat.MonitoringActivePackagesError, e);
return null;
@ -54,7 +50,7 @@ public class SignalControllerV3 {
@PostMapping(value = "/all_packages", consumes = MediaType.APPLICATION_XML_VALUE, produces = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<MonitoringAllPackagesResponse> findAllPackages(@RequestBody MonitoringAllPackagesRequest allPackagesRequest) {
try {
return signalFacadeV3.findAllPackages(allPackagesRequest);
return signalFacade.findAllPackages(allPackagesRequest);
} catch (Exception e) {
throwOrWrap(SignalError.ERROR_013, XmlErrorFormat.MonitoringAllPackagesError, e);
return null;
@ -65,7 +61,7 @@ public class SignalControllerV3 {
@PostMapping(value = "/delete", params = {"username", "packageName"}, produces = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<MonitoringPackageDeleteResponse> deletePackage(@RequestParam("username") String username, @RequestParam("packageName") String packageName) {
try {
return signalFacadeV3.deletePackage(username, packageName);
return signalFacade.deletePackage(username, packageName);
} catch (Exception e) {
throwOrWrap(SignalError.ERROR_017, XmlErrorFormat.MonitoringPackageDeleteError, e);
return null;
@ -74,12 +70,12 @@ public class SignalControllerV3 {
@GetMapping(value = "/report_list", params = {"username", "packageName"}, produces = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<MonitoringReportListResponse> getReportList(@RequestParam("username") String username, @RequestParam("packageName") String packageName) {
return signalFacadeV3.getReportList(username, packageName);
return signalFacade.getReportList(username, packageName);
}
@GetMapping(value = "/download", params = "file", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public ResponseEntity<Resource> downloadFile(@RequestParam("file") String file) {
return signalFacadeV3.downloadFile(file);
return signalFacade.downloadFile(file);
}
private static void throwOrWrap(SignalError error, XmlErrorFormat specific, Exception ex) {

View file

@ -1,17 +1,5 @@
package ru.nbch.credit_tracker.facade;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.xml.stream.XMLStreamException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.FileUrlResource;
import org.springframework.core.io.Resource;
@ -52,12 +40,25 @@ import ru.nbch.credit_tracker.utils.CtFileUtils;
import ru.nbch.credit_tracker.utils.EnumUtil;
import ru.nbch.credit_tracker.utils.LogUtil;
import ru.nbch.credit_tracker.utils.ZipUtils;
import javax.xml.stream.XMLStreamException;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static ru.nbch.credit_tracker.utils.error.ExceptionUtils.clientExcp;
import static ru.nbch.credit_tracker.utils.error.ExceptionUtils.serverExcp;
@Service
@Slf4j
public class SignalFacadeV3 {
public class SignalFacade {
private final MonitoringRequestValidator monitoringRequestValidator;
private final CreditTrackerSettings config;
@ -66,28 +67,22 @@ public class SignalFacadeV3 {
private final PipelinePackageFabric pipelinePackageManager;
private final SignalRestService signalRestService;
private final Saver saver;
private final ExecutorService pipelineExecutorService;
private final ExecutorService saverExecutorService;
private final PipelinePackageOrchestrator pipelineOrchestrator;
private final Pattern DOWNLOAD_FILE_PATTERN = Pattern.compile("^(?<member>[A-Za-z0-9]{6})_(?<package>[A-Za-z0-9_]+)_(?<ts>\\d{4}\\d{2}\\d{2}_\\d{2}\\d{2}\\d{2})(?:\\.xml)?\\.zip$");
public SignalFacadeV3(MonitoringRequestValidator monitoringRequestValidator,
public SignalFacade(MonitoringRequestValidator monitoringRequestValidator,
CreditTrackerSettings config,
UserPackageService userPackageService,
AuthorizationService authorizationService,
PipelinePackageFabric pipelinePackageManager,
SignalRestService signalRestService,
Saver saver,
ExecutorService pipelineExecutorService,
ExecutorService saverExecutorService, PipelinePackageOrchestrator pipelineOrchestrator) {
Saver saver, PipelinePackageOrchestrator pipelineOrchestrator) {
this.monitoringRequestValidator = monitoringRequestValidator;
this.config = config;
this.userPackageService = userPackageService;
this.authorizationService = authorizationService;
this.pipelinePackageManager = pipelinePackageManager;
this.signalRestService = signalRestService;
this.saverExecutorService = saverExecutorService;
this.pipelineExecutorService = pipelineExecutorService;
this.saver = saver;
this.pipelineOrchestrator = pipelineOrchestrator;
}

View file

@ -1,11 +1,5 @@
package ru.nbch.credit_tracker.service;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Optional;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.aop.framework.AopContext;
@ -17,11 +11,19 @@ import ru.nbch.credit_tracker.entities.app.UserPackage;
import ru.nbch.credit_tracker.entities.external_response.monitoring_report_error.MonitoringReportErrors;
import ru.nbch.credit_tracker.enums.RejectedStatus;
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
import ru.nbch.credit_tracker.service.indic.PhoneService2;
import ru.nbch.credit_tracker.refactoring.Suspicios;
import ru.nbch.credit_tracker.service.indic.PhoneService;
import ru.nbch.credit_tracker.service.signal.SignalRestService;
import ru.nbch.credit_tracker.service.xml.stax.StaxXmlProcessor;
import ru.nbch.credit_tracker.utils.CtFileUtils;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Optional;
@Slf4j
@Service
@EnableAspectJAutoProxy(exposeProxy = true)
@ -31,18 +33,18 @@ public class MonitoringErrorProcesingService {
private final UserPackageMapper userPackageMapper;
private final SignalRestService signalRestService;
private final StaxXmlProcessor staxXmlProcessor;
private final PhoneService2 phoneService2;
private final PhoneService phoneService;
private final Integer batchSize;
public MonitoringErrorProcesingService(UserPackageMapper userPackageMapper,
SignalRestService signalRestService,
StaxXmlProcessor staxXmlProcessor,
PhoneService2 phoneService2,
PhoneService phoneService,
CreditTrackerSettings config) {
this.userPackageMapper = userPackageMapper;
this.signalRestService = signalRestService;
this.staxXmlProcessor = staxXmlProcessor;
this.phoneService2 = phoneService2;
this.phoneService = phoneService;
this.batchSize = config.getPipeline().subjectBatchSize();
}
@ -82,7 +84,7 @@ public class MonitoringErrorProcesingService {
.errorText(p.getValue())
.build();
}).toList();
phoneService2.updateOnError(subjects);
phoneService.updateOnError(subjects);
log.trace("Updated subject's batch. Total count: {}. PackageId: {}", request.getPersons().size(), packageId);
request.getPersons().clear();
}
@ -95,6 +97,7 @@ public class MonitoringErrorProcesingService {
log.info("Subject's errors were updated. PackageId: {}", packageId);
}
@Suspicios("Нужен для аоп? А где используется")
private MonitoringErrorProcesingService getCurrentProxy() {
if (self == null) {
self = (MonitoringErrorProcesingService) AopContext.currentProxy();

View file

@ -12,10 +12,10 @@ import java.util.stream.Collectors;
@Slf4j
@Service
public class FlagsService2 {
public class FlagsService {
private final IndicFlagsMapper flagsMapper;
public FlagsService2(IndicFlagsMapper flagsMapper) {
public FlagsService(IndicFlagsMapper flagsMapper) {
this.flagsMapper = flagsMapper;
}

View file

@ -1,13 +1,5 @@
package ru.nbch.credit_tracker.service.indic;
import java.time.LocalDate;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.BinaryOperator;
import java.util.function.Function;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@ -17,9 +9,18 @@ import ru.nbch.credit_tracker.mapper.indic.PersonMapper;
import ru.nbch.credit_tracker.model.SubjectProfile;
import ru.nbch.credit_tracker.utils.CTUtil;
import java.time.LocalDate;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.BinaryOperator;
import java.util.function.Function;
import java.util.stream.Collectors;
@Slf4j
@Service
public class PersonServiceV2 {
public class PersonService {
private final PersonMapper mapper;
private final Comparator<Id> byDatesDesc =
@ -31,7 +32,7 @@ public class PersonServiceV2 {
.thenComparing(Name::getFileSinceDate, Comparator.nullsFirst(Comparator.naturalOrder()))
.thenComparing(Name::getFid);
public PersonServiceV2(PersonMapper mapper) {
public PersonService(PersonMapper mapper) {
this.mapper = mapper;
}

View file

@ -5,24 +5,19 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap;
import ru.nbch.credit_tracker.entities.indic.Name;
import ru.nbch.credit_tracker.mapper.signal.PackagesRecordsMapper;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
@Slf4j
@Service
public class PhoneService2 {
public class PhoneService {
private final PackagesRecordsMapper phoneFidMapMapper;
private final ObjectMapper entityToJsonMapper;
private final Comparator<Name> byDateThenIdNullSafe =
Comparator.comparing(Name::getFileSinceDate, Comparator.nullsFirst(Comparator.naturalOrder()))
.thenComparing(Name::getFid);
public PhoneService2(PackagesRecordsMapper phoneFidMapMapper,
public PhoneService(PackagesRecordsMapper phoneFidMapMapper,
ObjectMapper entityToJsonMapper) {
this.phoneFidMapMapper = phoneFidMapMapper;
this.entityToJsonMapper = entityToJsonMapper;

View file

@ -1,10 +1,6 @@
package ru.nbch.credit_tracker.service.mode.common;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@ -13,6 +9,9 @@ import ru.nbch.credit_tracker.entities.app.PhonesMap;
import ru.nbch.credit_tracker.mapper.signal.PhonesMapMapper;
import ru.nbch.credit_tracker.service.task.impl.FlagsEnricher;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
/**
* Сервис периодического обновления фидов и флагов просрочек по пакетам находящимся в статусе ON_MONITORING
* По обновленным пакетам формируется новый запрос постановки на мониторинг в официальный сервис сигналов
@ -21,7 +20,6 @@ import ru.nbch.credit_tracker.service.task.impl.FlagsEnricher;
@Service
@EnableScheduling
public class UpdatingFlagsService {
private final Logger log = LoggerFactory.getLogger(this.getClass());
private final static int BATCH_SIZE = 1000;
private final PhonesMapMapper phonesMapMapper;
private final FlagsEnricher flagsEnricherV2;

View file

@ -10,8 +10,8 @@ import ru.nbch.credit_tracker.component.MonitoringRequestValidator;
import ru.nbch.credit_tracker.config.datasource.ScoringDataSourceConfig;
import ru.nbch.credit_tracker.config.rest.RestConfig;
import ru.nbch.credit_tracker.config.xml.XmlConfig;
import ru.nbch.credit_tracker.controller.SignalControllerV3;
import ru.nbch.credit_tracker.facade.SignalFacadeV3;
import ru.nbch.credit_tracker.controller.SignalController;
import ru.nbch.credit_tracker.facade.SignalFacade;
import ru.nbch.credit_tracker.service.MonitoringErrorProcesingService;
import ru.nbch.credit_tracker.service.mode.common.CTMainApplication;
import ru.nbch.credit_tracker.service.mode.common.StartupRestoreService;
@ -35,7 +35,7 @@ import ru.nbch.credit_tracker.service.task.impl.Saver;
classes = {CTMonitoringApplication.class, CTMainApplication.class,
ScoringDataSourceConfig.class,StartupRestoreService.class, UpdatingFidAndPdService.class,
UpdatingFlagsService.class, MonitoringService.class, AuthorizationService.class,
SignalFacadeV3.class, SignalControllerV3.class, FlagsEnricher.class, PipelinePackageFabric.class,
SignalFacade.class, SignalController.class, FlagsEnricher.class, PipelinePackageFabric.class,
RestConfig.class, SignalRestService.class, MonitoringErrorProcesingService.class, Saver.class,
PipelinePackageOrchestrator.class, XmlConfig.class, MonitoringRequestValidator.class
}

View file

@ -1,7 +1,5 @@
package ru.nbch.credit_tracker.service.task;
import java.util.function.Function;
import java.util.function.Supplier;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Qualifier;
@ -16,7 +14,10 @@ import ru.nbch.credit_tracker.service.task.impl.FidIdUpdater;
import ru.nbch.credit_tracker.service.task.impl.FidNameUpdaterMigration;
import ru.nbch.credit_tracker.service.task.setup.IPipeLineStarter;
import ru.nbch.credit_tracker.service.task.setup.IPipeLineTerminator;
import ru.nbch.credit_tracker.service.task.setup.PipeLineBuilderV2;
import ru.nbch.credit_tracker.service.task.setup.PipeLineBuilder;
import java.util.function.Function;
import java.util.function.Supplier;
@Component
@Slf4j
@ -52,7 +53,7 @@ public class PipelineMigrationPackageFabric implements InitializingBean {
}
public Pipeline buildRecalculationPDMigration(SetupParam setupParam) throws Exception {
return PipeLineBuilderV2.first(nameUpdaterQueueFactory.getObject(), idUpdaterQueueFactory.getObject())
return PipeLineBuilder.first(nameUpdaterQueueFactory.getObject(), idUpdaterQueueFactory.getObject())
.handler(fidNameUpdaterMigration)
.andThen()
.stage(noOpQueueFactory.getObject())

View file

@ -1,33 +1,23 @@
package ru.nbch.credit_tracker.service.task;
import java.util.function.Function;
import java.util.function.Supplier;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.config.task.StageQueueFactory;
import ru.nbch.credit_tracker.model.impl.EmptyTerminatePayload;
import ru.nbch.credit_tracker.model.impl.PackageVariable;
import ru.nbch.credit_tracker.model.impl.PartFilePayload;
import ru.nbch.credit_tracker.model.impl.SignalXmlFilePayload;
import ru.nbch.credit_tracker.model.impl.SubjectPayload;
import ru.nbch.credit_tracker.model.impl.VoidPayload;
import ru.nbch.credit_tracker.service.task.impl.FidIdEnricher;
import ru.nbch.credit_tracker.service.task.impl.FidIdUpdater;
import ru.nbch.credit_tracker.service.task.impl.FidNameEnricher;
import ru.nbch.credit_tracker.service.task.impl.FidNameUpdater;
import ru.nbch.credit_tracker.service.task.impl.FidNameUpdaterMigration;
import ru.nbch.credit_tracker.service.task.impl.FlagsEnricher;
import ru.nbch.credit_tracker.model.impl.*;
import ru.nbch.credit_tracker.service.task.impl.*;
import ru.nbch.credit_tracker.service.task.setup.IPipeLineStarter;
import ru.nbch.credit_tracker.service.task.setup.IPipeLineTerminator;
import ru.nbch.credit_tracker.service.task.setup.PipeLineBuilderV2;
import ru.nbch.credit_tracker.service.task.setup.PipeLineBuilder;
import java.util.function.Function;
import java.util.function.Supplier;
@Component
@Slf4j
public class PipelinePackageFabric implements InitializingBean {
private final FlagsEnricher flagsEnricherV2;
private final StageQueueFactory<SubjectPayload> idEnricherQueueFactory;
private final StageQueueFactory<SubjectPayload> idUpdaterQueueFactory;
private final StageQueueFactory<SubjectPayload> nameEnricherQueueFactory;
@ -58,7 +48,6 @@ public class PipelinePackageFabric implements InitializingBean {
Supplier<IPipeLineTerminator<PartFilePayload, SignalXmlFilePayload>> pipelineTerminatorFactory,
Supplier<IPipeLineTerminator<VoidPayload, EmptyTerminatePayload>> noOpTerminatorFactory,
Function<SetupParam, IPipeLineStarter<SubjectPayload>> pipelineStarterFactory,
FlagsEnricher flagsEnricherV2,
FidNameEnricher fidNameEnricher,
CreditTrackerSettings creditTrackerSettings,
PipelineBackoff pipelineBackoff) {
@ -75,14 +64,13 @@ public class PipelinePackageFabric implements InitializingBean {
this.pipelineTerminatorFactory = pipelineTerminatorFactory;
this.noOpTerminatorFactory = noOpTerminatorFactory;
this.pipelineStarterFactory = pipelineStarterFactory;
this.flagsEnricherV2 = flagsEnricherV2;
this.fidNameEnricher = fidNameEnricher;
this.creditTrackerSettings = creditTrackerSettings;
this.pipelineBackoff = pipelineBackoff;
}
public Pipeline build(SetupParam setupParam) throws Exception {
return PipeLineBuilderV2.first(nameEnricherQueueFactory.getObject(), idEnricherQueueFactory.getObject())
return PipeLineBuilder.first(nameEnricherQueueFactory.getObject(), idEnricherQueueFactory.getObject())
.handler(fidNameEnricher)
.andThen()
.stage(sendSignalQueueFactory.getObject())
@ -96,7 +84,7 @@ public class PipelinePackageFabric implements InitializingBean {
}
public Pipeline buildRecalculationPD(SetupParam setupParam) throws Exception {
return PipeLineBuilderV2.first(nameUpdaterQueueFactory.getObject(), idUpdaterQueueFactory.getObject())
return PipeLineBuilder.first(nameUpdaterQueueFactory.getObject(), idUpdaterQueueFactory.getObject())
.handler(fidNameUpdater)
.andThen()
.stage(noOpQueueFactory.getObject())
@ -110,7 +98,7 @@ public class PipelinePackageFabric implements InitializingBean {
}
public Pipeline buildRecalculationPDMigration(SetupParam setupParam) throws Exception {
return PipeLineBuilderV2.first(nameUpdaterQueueFactory.getObject(), idUpdaterQueueFactory.getObject())
return PipeLineBuilder.first(nameUpdaterQueueFactory.getObject(), idUpdaterQueueFactory.getObject())
.handler(fidNameUpdaterMigration)
.andThen()
.stage(noOpQueueFactory.getObject())

View file

@ -1,21 +1,8 @@
package ru.nbch.credit_tracker.service.task.impl;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Stream;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.builder.PersonFactoryBuilderV2;
import ru.nbch.credit_tracker.builder.PersonFactoryBuilder;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.external_request.signals.Person;
import ru.nbch.credit_tracker.entities.indic.Id;
@ -23,21 +10,28 @@ import ru.nbch.credit_tracker.model.IdData;
import ru.nbch.credit_tracker.model.SubjectProfile;
import ru.nbch.credit_tracker.model.impl.PartFilePayload;
import ru.nbch.credit_tracker.model.impl.SubjectPayload;
import ru.nbch.credit_tracker.service.indic.PersonServiceV2;
import ru.nbch.credit_tracker.service.indic.PersonService;
import ru.nbch.credit_tracker.service.signal.PackageRecordsService;
import ru.nbch.credit_tracker.service.task.Handler;
import ru.nbch.credit_tracker.service.xml.stax.SignalsStaxXmlWriterV2;
import ru.nbch.credit_tracker.utils.CTUtil;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.*;
import java.util.*;
import java.util.stream.Stream;
import static ru.nbch.credit_tracker.utils.CTUtil.defineIdType;
@Service
@Slf4j
public class FidIdEnricher implements Handler<SubjectPayload, PartFilePayload> {
private final PersonServiceV2 personService;
private final PersonService personService;
private final PackageRecordsService packageRecordsService;
private final CreditTrackerSettings creditTrackerSettings;
public FidIdEnricher(PersonServiceV2 personService,
public FidIdEnricher(PersonService personService,
PackageRecordsService packageRecordsService,
CreditTrackerSettings creditTrackerSettings) {
this.personService = personService;
@ -84,7 +78,7 @@ public class FidIdEnricher implements Handler<SubjectPayload, PartFilePayload> {
idCacheOnUpdate.add(idData);
subjectProfile.setIdData(idData);
}
return Stream.of(PersonFactoryBuilderV2.builder()
return Stream.of(PersonFactoryBuilder.builder()
.personData(subjectProfile)
.build());
})

View file

@ -1,8 +1,5 @@
package ru.nbch.credit_tracker.service.task.impl;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
@ -11,20 +8,25 @@ import ru.nbch.credit_tracker.model.IdData;
import ru.nbch.credit_tracker.model.SubjectProfile;
import ru.nbch.credit_tracker.model.impl.SubjectPayload;
import ru.nbch.credit_tracker.model.impl.VoidPayload;
import ru.nbch.credit_tracker.service.indic.PersonServiceV2;
import ru.nbch.credit_tracker.service.indic.PersonService;
import ru.nbch.credit_tracker.service.signal.PackageRecordsService;
import ru.nbch.credit_tracker.service.task.Handler;
import ru.nbch.credit_tracker.utils.CTUtil;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
import static ru.nbch.credit_tracker.utils.CTUtil.defineIdType;
@Service
@Slf4j
public class FidIdUpdater implements Handler<SubjectPayload, VoidPayload> {
private final PersonServiceV2 personService;
private final PersonService personService;
private final PackageRecordsService packageRecordsService;
private final CreditTrackerSettings creditTrackerSettings;
public FidIdUpdater(PersonServiceV2 personService,
public FidIdUpdater(PersonService personService,
PackageRecordsService packageRecordsService,
CreditTrackerSettings creditTrackerSettings) {
this.personService = personService;

View file

@ -1,29 +1,22 @@
package ru.nbch.credit_tracker.service.task.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Stream;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.app.PhonesMap;
import ru.nbch.credit_tracker.entities.indic.Name;
import ru.nbch.credit_tracker.model.FlagData;
import ru.nbch.credit_tracker.model.IdData;
import ru.nbch.credit_tracker.model.NameData;
import ru.nbch.credit_tracker.model.PipelineContext;
import ru.nbch.credit_tracker.model.SubjectProfile;
import ru.nbch.credit_tracker.model.*;
import ru.nbch.credit_tracker.model.impl.PackageVariable;
import ru.nbch.credit_tracker.model.impl.SubjectPayload;
import ru.nbch.credit_tracker.service.indic.PersonServiceV2;
import ru.nbch.credit_tracker.service.indic.PersonService;
import ru.nbch.credit_tracker.service.signal.PackageRecordsService;
import ru.nbch.credit_tracker.service.task.Handler;
import ru.nbch.credit_tracker.utils.CTUtil;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Stream;
/**
* Стадия для сопоставления FID к номеру телефона и регистрации пакета в базе данных.
* Так же выполняется поиск и обогащение перс.данными из NAME для дальнейшей обработки.
@ -32,11 +25,11 @@ import ru.nbch.credit_tracker.utils.CTUtil;
@Service
@Slf4j
public class FidNameEnricher implements Handler<SubjectPayload, SubjectPayload> {
private final PersonServiceV2 personService;
private final PersonService personService;
private final CreditTrackerSettings creditTrackerSettings;
private final PackageRecordsService packageRecordsService;
public FidNameEnricher(PersonServiceV2 personService,
public FidNameEnricher(PersonService personService,
CreditTrackerSettings creditTrackerSettings,
PackageRecordsService packageRecordsService) {
this.personService = personService;

View file

@ -1,9 +1,5 @@
package ru.nbch.credit_tracker.service.task.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
@ -12,22 +8,27 @@ import ru.nbch.credit_tracker.model.SubjectProfile;
import ru.nbch.credit_tracker.model.impl.PackageVariable;
import ru.nbch.credit_tracker.model.impl.SubjectPayload;
import ru.nbch.credit_tracker.service.UserPackageService;
import ru.nbch.credit_tracker.service.indic.PersonServiceV2;
import ru.nbch.credit_tracker.service.indic.PersonService;
import ru.nbch.credit_tracker.service.signal.PackageRecordsService;
import ru.nbch.credit_tracker.service.signal.PhonesMapService;
import ru.nbch.credit_tracker.service.task.Handler;
import ru.nbch.credit_tracker.utils.CTUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
@Service
@Slf4j
public class FidNameUpdater implements Handler<SubjectPayload, SubjectPayload> {
private final PersonServiceV2 personService;
private final PersonService personService;
private final CreditTrackerSettings creditTrackerSettings;
private final PackageRecordsService packageRecordsService;
private final PhonesMapService phonesMapService;
private final UserPackageService userPackageService;
public FidNameUpdater(PersonServiceV2 personService,
public FidNameUpdater(PersonService personService,
CreditTrackerSettings creditTrackerSettings,
PackageRecordsService packageRecordsService,
PhonesMapService phonesMapService,

View file

@ -1,8 +1,5 @@
package ru.nbch.credit_tracker.service.task.impl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
@ -10,19 +7,23 @@ import ru.nbch.credit_tracker.entities.indic.Name;
import ru.nbch.credit_tracker.model.SubjectProfile;
import ru.nbch.credit_tracker.model.impl.PackageVariable;
import ru.nbch.credit_tracker.model.impl.SubjectPayload;
import ru.nbch.credit_tracker.service.indic.PersonServiceV2;
import ru.nbch.credit_tracker.service.indic.PersonService;
import ru.nbch.credit_tracker.service.signal.PhonesMapService;
import ru.nbch.credit_tracker.service.task.Handler;
import ru.nbch.credit_tracker.utils.CTUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Service
@Slf4j
public class FidNameUpdaterMigration implements Handler<SubjectPayload, SubjectPayload> {
private final PersonServiceV2 personService;
private final PersonService personService;
private final CreditTrackerSettings creditTrackerSettings;
private final PhonesMapService phonesMapService;
public FidNameUpdaterMigration(PersonServiceV2 personService,
public FidNameUpdaterMigration(PersonService personService,
CreditTrackerSettings creditTrackerSettings,
PhonesMapService phonesMapService) {
this.personService = personService;

View file

@ -1,5 +1,13 @@
package ru.nbch.credit_tracker.service.task.impl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.app.PhonesMap;
import ru.nbch.credit_tracker.model.FlagData;
import ru.nbch.credit_tracker.service.indic.FlagsService;
import ru.nbch.credit_tracker.service.signal.PackageRecordsService;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;
@ -8,23 +16,16 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Stream;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.app.PhonesMap;
import ru.nbch.credit_tracker.model.FlagData;
import ru.nbch.credit_tracker.service.indic.FlagsService2;
import ru.nbch.credit_tracker.service.signal.PackageRecordsService;
@Slf4j
@Service
public class FlagsEnricher {
private final FlagsService2 flagsService;
private final FlagsService flagsService;
private final PackageRecordsService packageRecordsService;
private final ExecutorService ioPool;
public FlagsEnricher(FlagsService2 flagsService,
public FlagsEnricher(FlagsService flagsService,
PackageRecordsService packageRecordsService,
CreditTrackerSettings creditTrackerSettings) {
this.flagsService = flagsService;

View file

@ -1,10 +1,5 @@
package ru.nbch.credit_tracker.service.task.impl;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
@ -13,25 +8,31 @@ import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap;
import ru.nbch.credit_tracker.entities.user_request.monitoring_request.MonitoringRequest;
import ru.nbch.credit_tracker.enums.Status;
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
import ru.nbch.credit_tracker.service.indic.PhoneService2;
import ru.nbch.credit_tracker.service.indic.PhoneService;
import ru.nbch.credit_tracker.service.xml.stax.StaxXmlProcessor;
import ru.nbch.credit_tracker.utils.error.ExceptionUtils;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
@Service
public class Saver {
private final Logger log = LoggerFactory.getLogger(getClass());
private final StaxXmlProcessor xmlProcessor;
private final PhoneService2 phoneService2;
private final PhoneService phoneService;
private final UserPackageMapper userPackageMapper;
private final int BATCH_SIZE;
public Saver(StaxXmlProcessor xmlProcessor,
PhoneService2 phoneService2,
PhoneService phoneService,
UserPackageMapper userPackageMapper,
CreditTrackerSettings creditTrackerSettings) {
this.xmlProcessor = xmlProcessor;
this.phoneService2 = phoneService2;
this.phoneService = phoneService;
this.userPackageMapper = userPackageMapper;
this.BATCH_SIZE = creditTrackerSettings.getSaverSubjectBatchSize();
}
@ -48,7 +49,7 @@ public class Saver {
.packageId(packageId)
.phone_l(Long.valueOf(subject.getClientId())) // validated ru.nbch.credit_tracker.service.ValidationService.validateMonitoringRequest
.build()).toList();
phoneService2.registerSubjects(subjectForSave);
phoneService.registerSubjects(subjectForSave);
request.getSubjects().getSubject().clear();
}
},

View file

@ -1,9 +1,5 @@
package ru.nbch.credit_tracker.service.task.setup;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.BlockingQueue;
import ru.nbch.credit_tracker.model.PipelineContext;
import ru.nbch.credit_tracker.model.StagePayload;
import ru.nbch.credit_tracker.service.task.Pipeline;
@ -11,7 +7,12 @@ import ru.nbch.credit_tracker.service.task.PipelineBackoff;
import ru.nbch.credit_tracker.service.task.Stage;
import ru.nbch.credit_tracker.service.task.setup.step.HandlerStep;
public class PipeLineBuilderV2<FIRST extends StagePayload, LAST extends StagePayload> {
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.BlockingQueue;
public class PipeLineBuilder<FIRST extends StagePayload, LAST extends StagePayload> {
private final List<Stage<?, ?>> stages;
private Stage<FIRST, ?> firstStage;
private BlockingQueue<LAST> lastQueue;
@ -20,29 +21,29 @@ public class PipeLineBuilderV2<FIRST extends StagePayload, LAST extends StagePay
private PipelineBackoff backoff;
private PipelineContext<?> context;
private PipeLineBuilderV2() {
private PipeLineBuilder() {
this.stages = new ArrayList<>();
}
public static <I extends StagePayload, O extends StagePayload>
HandlerStep<I, I, O> first(BlockingQueue<I> inputQueue, BlockingQueue<O> outputQueue) {
PipeLineBuilderV2<I, O> builder = new PipeLineBuilderV2<>();
PipeLineBuilder<I, O> builder = new PipeLineBuilder<>();
builder.lastQueue = outputQueue;
HandlerStep<I, I, O> step = StageBuilderV2.create(inputQueue, outputQueue);
((StageBuilderV2<I, I, O>) step).setParent(builder);
HandlerStep<I, I, O> step = StageBuilder.create(inputQueue, outputQueue);
((StageBuilder<I, I, O>) step).setParent(builder);
return step;
}
@SuppressWarnings("unchecked")
public <NEXT extends StagePayload>
HandlerStep<FIRST, LAST, NEXT> stage(BlockingQueue<NEXT> outputQueue) {
HandlerStep<FIRST, LAST, NEXT> step = StageBuilderV2.create(lastQueue, outputQueue);
HandlerStep<FIRST, LAST, NEXT> step = StageBuilder.create(lastQueue, outputQueue);
lastQueue = (BlockingQueue<LAST>) outputQueue;
((StageBuilderV2<FIRST, LAST, NEXT>) step).setParent((PipeLineBuilderV2<FIRST, NEXT>) this);
((StageBuilder<FIRST, LAST, NEXT>) step).setParent((PipeLineBuilder<FIRST, NEXT>) this);
return step;
}
public PipeLineBuilderV2<FIRST, LAST> fillInitialQueue(IPipeLineStarter<FIRST> pipeLineStarter) {
public PipeLineBuilder<FIRST, LAST> fillInitialQueue(IPipeLineStarter<FIRST> pipeLineStarter) {
Objects.requireNonNull(pipeLineStarter, "pipeLineStarter is required");
if (firstStage == null) {
throw new IllegalStateException("Pipeline has no stages");
@ -51,19 +52,19 @@ public class PipeLineBuilderV2<FIRST extends StagePayload, LAST extends StagePay
return this;
}
public PipeLineBuilderV2<FIRST, LAST> pollFinishingQueue(IPipeLineTerminator<LAST, ?> pipeLineTerminator) {
public PipeLineBuilder<FIRST, LAST> pollFinishingQueue(IPipeLineTerminator<LAST, ?> pipeLineTerminator) {
Objects.requireNonNull(pipeLineTerminator, "pipeLineTerminator is required");
this.pipeLineTerminator = pipeLineTerminator;
return this;
}
public PipeLineBuilderV2<FIRST, LAST> backoff(PipelineBackoff backoff) {
public PipeLineBuilder<FIRST, LAST> backoff(PipelineBackoff backoff) {
this.backoff = backoff;
return this;
}
public <T extends Enum<T>>
PipeLineBuilderV2<FIRST, LAST> context(Class<T> contextKeyClass) {
PipeLineBuilder<FIRST, LAST> context(Class<T> contextKeyClass) {
this.context = new PipelineContext<>(contextKeyClass);
return this;
}

View file

@ -15,16 +15,16 @@ import java.util.function.Consumer;
* Step Builder для Stage:
* Обязательная последовательность: handler(...) -> poison(...) -> buildStage()
*/
public class StageBuilderV2<FIRST extends StagePayload, I extends StagePayload, O extends StagePayload>
public class StageBuilder<FIRST extends StagePayload, I extends StagePayload, O extends StagePayload>
implements HandlerStep<FIRST, I, O>, BuildStep<FIRST, O> {
private PipeLineBuilderV2<FIRST, O> parent;
private PipeLineBuilder<FIRST, O> parent;
private final BlockingQueue<I> inputQueue;
private final BlockingQueue<O> outputQueue;
private Handler<I, O> handler;
private Consumer<O> consumer = null;
private StageBuilderV2(BlockingQueue<I> inputQueue, BlockingQueue<O> outputQueue) {
private StageBuilder(BlockingQueue<I> inputQueue, BlockingQueue<O> outputQueue) {
this.inputQueue = Objects.requireNonNull(inputQueue, "inputQueue is required");
this.outputQueue = Objects.requireNonNull(outputQueue, "outputQueue is required");
}
@ -32,10 +32,10 @@ public class StageBuilderV2<FIRST extends StagePayload, I extends StagePayload,
/** Стартовая фабрика возвращает первый шаг — HandlerStep */
public static <FIRST extends StagePayload, I extends StagePayload, O extends StagePayload>
HandlerStep<FIRST, I, O> create(BlockingQueue<I> inputQueue, BlockingQueue<O> outputQueue) {
return new StageBuilderV2<>(inputQueue, outputQueue);
return new StageBuilder<>(inputQueue, outputQueue);
}
void setParent(PipeLineBuilderV2<FIRST, O> parent) {
void setParent(PipeLineBuilder<FIRST, O> parent) {
this.parent = Objects.requireNonNull(parent, "parent is required");
}
@ -57,7 +57,7 @@ public class StageBuilderV2<FIRST extends StagePayload, I extends StagePayload,
/** Шаг 3: собрать Stage и вернуться к PipeLineBuilder */
@Override
public PipeLineBuilderV2<FIRST, O> andThen() {
public PipeLineBuilder<FIRST, O> andThen() {
if (parent == null) {
throw new IllegalStateException("parent PipeLineBuilder is not set");
}

View file

@ -2,12 +2,12 @@ package ru.nbch.credit_tracker.service.task.setup.step;
import ru.nbch.credit_tracker.model.StagePayload;
import ru.nbch.credit_tracker.refactoring.Suspicios;
import ru.nbch.credit_tracker.service.task.setup.PipeLineBuilderV2;
import ru.nbch.credit_tracker.service.task.setup.PipeLineBuilder;
import java.util.function.Consumer;
public interface BuildStep<FIRST extends StagePayload, O extends StagePayload> {
PipeLineBuilderV2<FIRST, O> andThen();
PipeLineBuilder<FIRST, O> andThen();
@Suspicios("Удалить?")
BuildStep<FIRST, O> handlerResult(Consumer<O> consumer);

View file

@ -12,7 +12,7 @@ import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
public class FlagsService2Test {
public class FlagsServiceTest {
private static final LocalDate INITIAL_DATE = LocalDate.parse("2025-09-25");

View file

@ -1,22 +1,23 @@
package ru.nbch.credit_tracker.service;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
import ru.nbch.credit_tracker.entities.indic.Id;
import ru.nbch.credit_tracker.service.indic.PersonServiceV2;
import ru.nbch.credit_tracker.service.indic.PersonService;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ExtendWith(MockitoExtension.class)
public class PersonServiceTest {
@Test
public void groupingPassportDataTest() {
PersonServiceV2 personServiceV2 = new PersonServiceV2(null);
PersonService personService = new PersonService(null);
List<Id> ids = new ArrayList<>();
{
@ -40,7 +41,7 @@ public class PersonServiceTest {
.build();
ids.add(id);
}
Map<Integer, Id> grouped = personServiceV2.groupPassportsData(ids);
Map<Integer, Id> grouped = personService.groupPassportsData(ids);
Assertions.assertTrue(grouped.isEmpty());
{
@ -54,7 +55,7 @@ public class PersonServiceTest {
ids.add(id);
}
grouped = personServiceV2.groupPassportsData(ids);
grouped = personService.groupPassportsData(ids);
Assertions.assertFalse(grouped.isEmpty());
Assertions.assertNotNull(grouped.get(1));
@ -70,7 +71,7 @@ public class PersonServiceTest {
ids.add(id);
}
grouped = personServiceV2.groupPassportsData(ids);
grouped = personService.groupPassportsData(ids);
Assertions.assertNotNull(grouped.get(1));
Assertions.assertEquals("1111", grouped.get(1).getIdNum());
@ -86,7 +87,7 @@ public class PersonServiceTest {
ids.add(id);
}
grouped = personServiceV2.groupPassportsData(ids);
grouped = personService.groupPassportsData(ids);
Assertions.assertNotNull(grouped.get(2));
Assertions.assertEquals("22222222", grouped.get(2).getIdNum());
}

View file

@ -15,7 +15,7 @@ import java.util.Comparator;
import java.util.List;
@ExtendWith(MockitoExtension.class)
public class PhoneService2Test {
public class PhoneServiceTest {
// @Mock
// PhoneRepository phoneRepository;