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; package ru.nbch.credit_tracker.builder;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
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.external_request.signals.Person; 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.NameData;
import ru.nbch.credit_tracker.model.SubjectProfile; import ru.nbch.credit_tracker.model.SubjectProfile;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
@Slf4j @Slf4j
public class PersonFactoryBuilderV2 { public class PersonFactoryBuilder {
private final static DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd.MM.yyyy"); private final static DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd.MM.yyyy");
private final static String DEFAULT_DATE = "01.01.2000"; private final static String DEFAULT_DATE = "01.01.2000";
@ -31,11 +32,11 @@ public class PersonFactoryBuilderV2 {
private SubjectProfile personData; private SubjectProfile personData;
public static PersonFactoryBuilderV2 builder() { public static PersonFactoryBuilder builder() {
return new PersonFactoryBuilderV2(); return new PersonFactoryBuilder();
} }
public PersonFactoryBuilderV2 personData(SubjectProfile personData) { public PersonFactoryBuilder personData(SubjectProfile personData) {
this.personData = personData; this.personData = personData;
return this; return this;
} }

View file

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

View file

@ -1,17 +1,5 @@
package ru.nbch.credit_tracker.facade; 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 lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.FileUrlResource; import org.springframework.core.io.FileUrlResource;
import org.springframework.core.io.Resource; 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.EnumUtil;
import ru.nbch.credit_tracker.utils.LogUtil; import ru.nbch.credit_tracker.utils.LogUtil;
import ru.nbch.credit_tracker.utils.ZipUtils; 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.clientExcp;
import static ru.nbch.credit_tracker.utils.error.ExceptionUtils.serverExcp; import static ru.nbch.credit_tracker.utils.error.ExceptionUtils.serverExcp;
@Service @Service
@Slf4j @Slf4j
public class SignalFacadeV3 { public class SignalFacade {
private final MonitoringRequestValidator monitoringRequestValidator; private final MonitoringRequestValidator monitoringRequestValidator;
private final CreditTrackerSettings config; private final CreditTrackerSettings config;
@ -66,28 +67,22 @@ public class SignalFacadeV3 {
private final PipelinePackageFabric pipelinePackageManager; private final PipelinePackageFabric pipelinePackageManager;
private final SignalRestService signalRestService; private final SignalRestService signalRestService;
private final Saver saver; private final Saver saver;
private final ExecutorService pipelineExecutorService;
private final ExecutorService saverExecutorService;
private final PipelinePackageOrchestrator pipelineOrchestrator; 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$"); 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, CreditTrackerSettings config,
UserPackageService userPackageService, UserPackageService userPackageService,
AuthorizationService authorizationService, AuthorizationService authorizationService,
PipelinePackageFabric pipelinePackageManager, PipelinePackageFabric pipelinePackageManager,
SignalRestService signalRestService, SignalRestService signalRestService,
Saver saver, Saver saver, PipelinePackageOrchestrator pipelineOrchestrator) {
ExecutorService pipelineExecutorService,
ExecutorService saverExecutorService, PipelinePackageOrchestrator pipelineOrchestrator) {
this.monitoringRequestValidator = monitoringRequestValidator; this.monitoringRequestValidator = monitoringRequestValidator;
this.config = config; this.config = config;
this.userPackageService = userPackageService; this.userPackageService = userPackageService;
this.authorizationService = authorizationService; this.authorizationService = authorizationService;
this.pipelinePackageManager = pipelinePackageManager; this.pipelinePackageManager = pipelinePackageManager;
this.signalRestService = signalRestService; this.signalRestService = signalRestService;
this.saverExecutorService = saverExecutorService;
this.pipelineExecutorService = pipelineExecutorService;
this.saver = saver; this.saver = saver;
this.pipelineOrchestrator = pipelineOrchestrator; this.pipelineOrchestrator = pipelineOrchestrator;
} }

View file

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

View file

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

View file

@ -1,13 +1,5 @@
package ru.nbch.credit_tracker.service.indic; 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 lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; 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.model.SubjectProfile;
import ru.nbch.credit_tracker.utils.CTUtil; 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 @Slf4j
@Service @Service
public class PersonServiceV2 { public class PersonService {
private final PersonMapper mapper; private final PersonMapper mapper;
private final Comparator<Id> byDatesDesc = private final Comparator<Id> byDatesDesc =
@ -31,7 +32,7 @@ public class PersonServiceV2 {
.thenComparing(Name::getFileSinceDate, Comparator.nullsFirst(Comparator.naturalOrder())) .thenComparing(Name::getFileSinceDate, Comparator.nullsFirst(Comparator.naturalOrder()))
.thenComparing(Name::getFid); .thenComparing(Name::getFid);
public PersonServiceV2(PersonMapper mapper) { public PersonService(PersonMapper mapper) {
this.mapper = mapper; this.mapper = mapper;
} }

View file

@ -5,25 +5,20 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap; 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 ru.nbch.credit_tracker.mapper.signal.PackagesRecordsMapper;
import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@Slf4j @Slf4j
@Service @Service
public class PhoneService2 { public class PhoneService {
private final PackagesRecordsMapper phoneFidMapMapper; private final PackagesRecordsMapper phoneFidMapMapper;
private final ObjectMapper entityToJsonMapper; 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) { ObjectMapper entityToJsonMapper) {
this.phoneFidMapMapper = phoneFidMapMapper; this.phoneFidMapMapper = phoneFidMapMapper;
this.entityToJsonMapper = entityToJsonMapper; this.entityToJsonMapper = entityToJsonMapper;
} }

View file

@ -1,10 +1,6 @@
package ru.nbch.credit_tracker.service.mode.common; package ru.nbch.credit_tracker.service.mode.common;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; 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.mapper.signal.PhonesMapMapper;
import ru.nbch.credit_tracker.service.task.impl.FlagsEnricher; import ru.nbch.credit_tracker.service.task.impl.FlagsEnricher;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
/** /**
* Сервис периодического обновления фидов и флагов просрочек по пакетам находящимся в статусе ON_MONITORING * Сервис периодического обновления фидов и флагов просрочек по пакетам находящимся в статусе ON_MONITORING
* По обновленным пакетам формируется новый запрос постановки на мониторинг в официальный сервис сигналов * По обновленным пакетам формируется новый запрос постановки на мониторинг в официальный сервис сигналов
@ -21,7 +20,6 @@ import ru.nbch.credit_tracker.service.task.impl.FlagsEnricher;
@Service @Service
@EnableScheduling @EnableScheduling
public class UpdatingFlagsService { public class UpdatingFlagsService {
private final Logger log = LoggerFactory.getLogger(this.getClass());
private final static int BATCH_SIZE = 1000; private final static int BATCH_SIZE = 1000;
private final PhonesMapMapper phonesMapMapper; private final PhonesMapMapper phonesMapMapper;
private final FlagsEnricher flagsEnricherV2; 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.datasource.ScoringDataSourceConfig;
import ru.nbch.credit_tracker.config.rest.RestConfig; import ru.nbch.credit_tracker.config.rest.RestConfig;
import ru.nbch.credit_tracker.config.xml.XmlConfig; import ru.nbch.credit_tracker.config.xml.XmlConfig;
import ru.nbch.credit_tracker.controller.SignalControllerV3; import ru.nbch.credit_tracker.controller.SignalController;
import ru.nbch.credit_tracker.facade.SignalFacadeV3; import ru.nbch.credit_tracker.facade.SignalFacade;
import ru.nbch.credit_tracker.service.MonitoringErrorProcesingService; import ru.nbch.credit_tracker.service.MonitoringErrorProcesingService;
import ru.nbch.credit_tracker.service.mode.common.CTMainApplication; import ru.nbch.credit_tracker.service.mode.common.CTMainApplication;
import ru.nbch.credit_tracker.service.mode.common.StartupRestoreService; 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, classes = {CTMonitoringApplication.class, CTMainApplication.class,
ScoringDataSourceConfig.class,StartupRestoreService.class, UpdatingFidAndPdService.class, ScoringDataSourceConfig.class,StartupRestoreService.class, UpdatingFidAndPdService.class,
UpdatingFlagsService.class, MonitoringService.class, AuthorizationService.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, RestConfig.class, SignalRestService.class, MonitoringErrorProcesingService.class, Saver.class,
PipelinePackageOrchestrator.class, XmlConfig.class, MonitoringRequestValidator.class PipelinePackageOrchestrator.class, XmlConfig.class, MonitoringRequestValidator.class
} }

View file

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

View file

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

View file

@ -1,21 +1,8 @@
package ru.nbch.credit_tracker.service.task.impl; 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 lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; 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.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.external_request.signals.Person; import ru.nbch.credit_tracker.entities.external_request.signals.Person;
import ru.nbch.credit_tracker.entities.indic.Id; 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.SubjectProfile;
import ru.nbch.credit_tracker.model.impl.PartFilePayload; import ru.nbch.credit_tracker.model.impl.PartFilePayload;
import ru.nbch.credit_tracker.model.impl.SubjectPayload; 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.signal.PackageRecordsService;
import ru.nbch.credit_tracker.service.task.Handler; import ru.nbch.credit_tracker.service.task.Handler;
import ru.nbch.credit_tracker.service.xml.stax.SignalsStaxXmlWriterV2; import ru.nbch.credit_tracker.service.xml.stax.SignalsStaxXmlWriterV2;
import ru.nbch.credit_tracker.utils.CTUtil; 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; import static ru.nbch.credit_tracker.utils.CTUtil.defineIdType;
@Service @Service
@Slf4j @Slf4j
public class FidIdEnricher implements Handler<SubjectPayload, PartFilePayload> { public class FidIdEnricher implements Handler<SubjectPayload, PartFilePayload> {
private final PersonServiceV2 personService; private final PersonService personService;
private final PackageRecordsService packageRecordsService; private final PackageRecordsService packageRecordsService;
private final CreditTrackerSettings creditTrackerSettings; private final CreditTrackerSettings creditTrackerSettings;
public FidIdEnricher(PersonServiceV2 personService, public FidIdEnricher(PersonService personService,
PackageRecordsService packageRecordsService, PackageRecordsService packageRecordsService,
CreditTrackerSettings creditTrackerSettings) { CreditTrackerSettings creditTrackerSettings) {
this.personService = personService; this.personService = personService;
@ -84,7 +78,7 @@ public class FidIdEnricher implements Handler<SubjectPayload, PartFilePayload> {
idCacheOnUpdate.add(idData); idCacheOnUpdate.add(idData);
subjectProfile.setIdData(idData); subjectProfile.setIdData(idData);
} }
return Stream.of(PersonFactoryBuilderV2.builder() return Stream.of(PersonFactoryBuilder.builder()
.personData(subjectProfile) .personData(subjectProfile)
.build()); .build());
}) })

View file

@ -1,8 +1,5 @@
package ru.nbch.credit_tracker.service.task.impl; 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 lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; 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.SubjectProfile;
import ru.nbch.credit_tracker.model.impl.SubjectPayload; import ru.nbch.credit_tracker.model.impl.SubjectPayload;
import ru.nbch.credit_tracker.model.impl.VoidPayload; 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.signal.PackageRecordsService;
import ru.nbch.credit_tracker.service.task.Handler; import ru.nbch.credit_tracker.service.task.Handler;
import ru.nbch.credit_tracker.utils.CTUtil; 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; import static ru.nbch.credit_tracker.utils.CTUtil.defineIdType;
@Service @Service
@Slf4j @Slf4j
public class FidIdUpdater implements Handler<SubjectPayload, VoidPayload> { public class FidIdUpdater implements Handler<SubjectPayload, VoidPayload> {
private final PersonServiceV2 personService; private final PersonService personService;
private final PackageRecordsService packageRecordsService; private final PackageRecordsService packageRecordsService;
private final CreditTrackerSettings creditTrackerSettings; private final CreditTrackerSettings creditTrackerSettings;
public FidIdUpdater(PersonServiceV2 personService, public FidIdUpdater(PersonService personService,
PackageRecordsService packageRecordsService, PackageRecordsService packageRecordsService,
CreditTrackerSettings creditTrackerSettings) { CreditTrackerSettings creditTrackerSettings) {
this.personService = personService; this.personService = personService;

View file

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

View file

@ -1,9 +1,5 @@
package ru.nbch.credit_tracker.service.task.impl; 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 lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; 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.PackageVariable;
import ru.nbch.credit_tracker.model.impl.SubjectPayload; import ru.nbch.credit_tracker.model.impl.SubjectPayload;
import ru.nbch.credit_tracker.service.UserPackageService; 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.PackageRecordsService;
import ru.nbch.credit_tracker.service.signal.PhonesMapService; import ru.nbch.credit_tracker.service.signal.PhonesMapService;
import ru.nbch.credit_tracker.service.task.Handler; import ru.nbch.credit_tracker.service.task.Handler;
import ru.nbch.credit_tracker.utils.CTUtil; 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 @Service
@Slf4j @Slf4j
public class FidNameUpdater implements Handler<SubjectPayload, SubjectPayload> { public class FidNameUpdater implements Handler<SubjectPayload, SubjectPayload> {
private final PersonServiceV2 personService; private final PersonService personService;
private final CreditTrackerSettings creditTrackerSettings; private final CreditTrackerSettings creditTrackerSettings;
private final PackageRecordsService packageRecordsService; private final PackageRecordsService packageRecordsService;
private final PhonesMapService phonesMapService; private final PhonesMapService phonesMapService;
private final UserPackageService userPackageService; private final UserPackageService userPackageService;
public FidNameUpdater(PersonServiceV2 personService, public FidNameUpdater(PersonService personService,
CreditTrackerSettings creditTrackerSettings, CreditTrackerSettings creditTrackerSettings,
PackageRecordsService packageRecordsService, PackageRecordsService packageRecordsService,
PhonesMapService phonesMapService, PhonesMapService phonesMapService,

View file

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

View file

@ -1,5 +1,13 @@
package ru.nbch.credit_tracker.service.task.impl; 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.time.LocalDate;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -8,23 +16,16 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Stream; 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 @Slf4j
@Service @Service
public class FlagsEnricher { public class FlagsEnricher {
private final FlagsService2 flagsService; private final FlagsService flagsService;
private final PackageRecordsService packageRecordsService; private final PackageRecordsService packageRecordsService;
private final ExecutorService ioPool; private final ExecutorService ioPool;
public FlagsEnricher(FlagsService2 flagsService, public FlagsEnricher(FlagsService flagsService,
PackageRecordsService packageRecordsService, PackageRecordsService packageRecordsService,
CreditTrackerSettings creditTrackerSettings) { CreditTrackerSettings creditTrackerSettings) {
this.flagsService = flagsService; this.flagsService = flagsService;

View file

@ -1,10 +1,5 @@
package ru.nbch.credit_tracker.service.task.impl; 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.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; 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.entities.user_request.monitoring_request.MonitoringRequest;
import ru.nbch.credit_tracker.enums.Status; import ru.nbch.credit_tracker.enums.Status;
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper; 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.service.xml.stax.StaxXmlProcessor;
import ru.nbch.credit_tracker.utils.error.ExceptionUtils; 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 @Service
public class Saver { public class Saver {
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
private final StaxXmlProcessor xmlProcessor; private final StaxXmlProcessor xmlProcessor;
private final PhoneService2 phoneService2; private final PhoneService phoneService;
private final UserPackageMapper userPackageMapper; private final UserPackageMapper userPackageMapper;
private final int BATCH_SIZE; private final int BATCH_SIZE;
public Saver(StaxXmlProcessor xmlProcessor, public Saver(StaxXmlProcessor xmlProcessor,
PhoneService2 phoneService2, PhoneService phoneService,
UserPackageMapper userPackageMapper, UserPackageMapper userPackageMapper,
CreditTrackerSettings creditTrackerSettings) { CreditTrackerSettings creditTrackerSettings) {
this.xmlProcessor = xmlProcessor; this.xmlProcessor = xmlProcessor;
this.phoneService2 = phoneService2; this.phoneService = phoneService;
this.userPackageMapper = userPackageMapper; this.userPackageMapper = userPackageMapper;
this.BATCH_SIZE = creditTrackerSettings.getSaverSubjectBatchSize(); this.BATCH_SIZE = creditTrackerSettings.getSaverSubjectBatchSize();
} }
@ -48,7 +49,7 @@ public class Saver {
.packageId(packageId) .packageId(packageId)
.phone_l(Long.valueOf(subject.getClientId())) // validated ru.nbch.credit_tracker.service.ValidationService.validateMonitoringRequest .phone_l(Long.valueOf(subject.getClientId())) // validated ru.nbch.credit_tracker.service.ValidationService.validateMonitoringRequest
.build()).toList(); .build()).toList();
phoneService2.registerSubjects(subjectForSave); phoneService.registerSubjects(subjectForSave);
request.getSubjects().getSubject().clear(); request.getSubjects().getSubject().clear();
} }
}, },

View file

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

View file

@ -15,16 +15,16 @@ import java.util.function.Consumer;
* Step Builder для Stage: * Step Builder для Stage:
* Обязательная последовательность: handler(...) -> poison(...) -> buildStage() * Обязательная последовательность: 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> { 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<I> inputQueue;
private final BlockingQueue<O> outputQueue; private final BlockingQueue<O> outputQueue;
private Handler<I, O> handler; private Handler<I, O> handler;
private Consumer<O> consumer = null; 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.inputQueue = Objects.requireNonNull(inputQueue, "inputQueue is required");
this.outputQueue = Objects.requireNonNull(outputQueue, "outputQueue is required"); this.outputQueue = Objects.requireNonNull(outputQueue, "outputQueue is required");
} }
@ -32,10 +32,10 @@ public class StageBuilderV2<FIRST extends StagePayload, I extends StagePayload,
/** Стартовая фабрика возвращает первый шаг — HandlerStep */ /** Стартовая фабрика возвращает первый шаг — HandlerStep */
public static <FIRST extends StagePayload, I extends StagePayload, O extends StagePayload> public static <FIRST extends StagePayload, I extends StagePayload, O extends StagePayload>
HandlerStep<FIRST, I, O> create(BlockingQueue<I> inputQueue, BlockingQueue<O> outputQueue) { 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"); this.parent = Objects.requireNonNull(parent, "parent is required");
} }
@ -57,7 +57,7 @@ public class StageBuilderV2<FIRST extends StagePayload, I extends StagePayload,
/** Шаг 3: собрать Stage и вернуться к PipeLineBuilder */ /** Шаг 3: собрать Stage и вернуться к PipeLineBuilder */
@Override @Override
public PipeLineBuilderV2<FIRST, O> andThen() { public PipeLineBuilder<FIRST, O> andThen() {
if (parent == null) { if (parent == null) {
throw new IllegalStateException("parent PipeLineBuilder is not set"); 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.model.StagePayload;
import ru.nbch.credit_tracker.refactoring.Suspicios; 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; import java.util.function.Consumer;
public interface BuildStep<FIRST extends StagePayload, O extends StagePayload> { public interface BuildStep<FIRST extends StagePayload, O extends StagePayload> {
PipeLineBuilderV2<FIRST, O> andThen(); PipeLineBuilder<FIRST, O> andThen();
@Suspicios("Удалить?") @Suspicios("Удалить?")
BuildStep<FIRST, O> handlerResult(Consumer<O> consumer); 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.ArrayList;
import java.util.List; import java.util.List;
public class FlagsService2Test { public class FlagsServiceTest {
private static final LocalDate INITIAL_DATE = LocalDate.parse("2025-09-25"); private static final LocalDate INITIAL_DATE = LocalDate.parse("2025-09-25");

View file

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

View file

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