diff --git a/src/main/java/ru/nbch/credit_tracker/builder/PersonFactoryBuilderV2.java b/src/main/java/ru/nbch/credit_tracker/builder/PersonFactoryBuilderV2.java index 0103e1e..f305a58 100644 --- a/src/main/java/ru/nbch/credit_tracker/builder/PersonFactoryBuilderV2.java +++ b/src/main/java/ru/nbch/credit_tracker/builder/PersonFactoryBuilderV2.java @@ -8,7 +8,6 @@ import ru.nbch.credit_tracker.entities.external_request.signals.Person; import ru.nbch.credit_tracker.model.IdData; import ru.nbch.credit_tracker.model.NameData; import ru.nbch.credit_tracker.model.SubjectProfile; -import ru.nbch.credit_tracker.utils.CTUtil; @Slf4j public class PersonFactoryBuilderV2 { @@ -85,24 +84,4 @@ public class PersonFactoryBuilderV2 { person.setInqPurpose(INQ_PURPOSE); return person; } - - private String getPn(String serNum, String idNum) { - String normSerNum = CTUtil.normalize(serNum); - String normIdNum = CTUtil.normalize(idNum); - return StringUtils.isNotBlank(normSerNum) ? normSerNum + normIdNum : normIdNum; - } - - private String getDt(String idType, String idType2) { - if (StringUtils.isNotBlank(idType2)) { - return idType2; - } else { - return switch (idType) { - case "21" -> "21"; - default -> { - log.warn("ID_TYPE2 is blank and no matching found for ID_TYPE {}", idType); - yield ""; - } - }; - } - } } diff --git a/src/main/java/ru/nbch/credit_tracker/config/task/PipelineStarterConfig.java b/src/main/java/ru/nbch/credit_tracker/config/task/PipelineStarterConfig.java index d5172d9..2beb2fc 100644 --- a/src/main/java/ru/nbch/credit_tracker/config/task/PipelineStarterConfig.java +++ b/src/main/java/ru/nbch/credit_tracker/config/task/PipelineStarterConfig.java @@ -36,6 +36,8 @@ public class PipelineStarterConfig { new KickPipeLineDefaultImpl(setupParam, userPackageMapper, packageRecordsService, creditTrackerSettings); case REPEATED_RESTORE -> new KickPipeLineRepeatedRestoreImpl(setupParam, userPackageMapper, packageRecordsService, creditTrackerSettings); + case MAKE_XML_BY_REPEATED -> + new KickPipeLineRepeatedRestoreImpl(setupParam, userPackageMapper, packageRecordsService, creditTrackerSettings); case RECALC_PERSONAL_DATA -> new KickRecalcPipeLine(setupParam, userPackageMapper, phonesMapMapper, packageRecordsService, creditTrackerSettings); }; diff --git a/src/main/java/ru/nbch/credit_tracker/service/UpdatingFidAndPdService.java b/src/main/java/ru/nbch/credit_tracker/service/UpdatingFidAndPdService.java index f32a813..dc024ef 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/UpdatingFidAndPdService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/UpdatingFidAndPdService.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Service; import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; import ru.nbch.credit_tracker.service.task.Pipeline; import ru.nbch.credit_tracker.service.task.PipelinePackageFabric; +import ru.nbch.credit_tracker.service.task.PipelinePackageOrchestrator; import ru.nbch.credit_tracker.service.task.PipelineRecalcPDOrchestrator; import ru.nbch.credit_tracker.service.task.SetupParam; import ru.nbch.credit_tracker.service.task.impl.PipelineMode; @@ -17,12 +18,15 @@ import ru.nbch.credit_tracker.service.task.impl.PipelineMode; public class UpdatingFidAndPdService { private final PipelinePackageFabric pipelinePackageManager; private final PipelineRecalcPDOrchestrator pipelineRecalcPDOrchestrator; + private final PipelinePackageOrchestrator pipelinePackageOrchestrator; public UpdatingFidAndPdService(CreditTrackerSettings config, PipelinePackageFabric pipelinePackageManager, - PipelineRecalcPDOrchestrator pipelineRecalcPDOrchestrator) { + PipelineRecalcPDOrchestrator pipelineRecalcPDOrchestrator, + PipelinePackageOrchestrator pipelinePackageOrchestrator) { this.pipelinePackageManager = pipelinePackageManager; this.pipelineRecalcPDOrchestrator = pipelineRecalcPDOrchestrator; + this.pipelinePackageOrchestrator = pipelinePackageOrchestrator; } @Scheduled(cron = "${ct.update-fid-cron-expression}") @@ -30,7 +34,15 @@ public class UpdatingFidAndPdService { log.info("Start updating fids and PD"); try { Pipeline pipeline = pipelinePackageManager.buildRecalculationPD(new SetupParam(null, null, PipelineMode.RECALC_PERSONAL_DATA)); - pipelineRecalcPDOrchestrator.startOrReject(pipeline); + pipelineRecalcPDOrchestrator.startOrReject(pipeline, () -> { + SetupParam setupParam = new SetupParam(null, null, PipelineMode.MAKE_XML_BY_REPEATED); + try { + Pipeline makeXmlByCache = pipelinePackageManager.build(setupParam); + pipelinePackageOrchestrator.startOrDelay(makeXmlByCache, null); + } catch (Exception e) { + log.error("Failed to build pipeline", e); + } + }); } catch (Exception e) { log.error("Failed to build pipeline", e); } diff --git a/src/main/java/ru/nbch/credit_tracker/service/task/PipelinePackageFabric.java b/src/main/java/ru/nbch/credit_tracker/service/task/PipelinePackageFabric.java index 9abc35f..b5755a6 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/task/PipelinePackageFabric.java +++ b/src/main/java/ru/nbch/credit_tracker/service/task/PipelinePackageFabric.java @@ -80,6 +80,7 @@ public class PipelinePackageFabric implements InitializingBean { public Pipeline build(SetupParam setupParam) throws Exception { return PipeLineBuilderV2.first(nameEnricherQueueFactory.getObject(), idEnricherQueueFactory.getObject()) .handler(fidNameEnricher) + .handlerResult(flagsEnricherV2) .andThen() .stage(sendSignalQueueFactory.getObject()) .handler(fidIdEnricherHandler) diff --git a/src/main/java/ru/nbch/credit_tracker/service/task/PipelineRecalcPDOrchestrator.java b/src/main/java/ru/nbch/credit_tracker/service/task/PipelineRecalcPDOrchestrator.java index 5defcc9..da0d0ca 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/task/PipelineRecalcPDOrchestrator.java +++ b/src/main/java/ru/nbch/credit_tracker/service/task/PipelineRecalcPDOrchestrator.java @@ -7,7 +7,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; -import ru.nbch.credit_tracker.model.impl.EmptyTerminatePayload; import ru.nbch.credit_tracker.utils.error.ExceptionUtils; @Service @@ -25,7 +24,7 @@ public class PipelineRecalcPDOrchestrator { this.semaphore = new Semaphore(1); } - public void startOrReject(Pipeline pipeline) { + public void startOrReject(Pipeline pipeline, Runnable after) { synchronized (lock) { if (!semaphore.tryAcquire()) { log.debug("couldn't acquire permit from semaphore. task rejected..."); @@ -33,13 +32,13 @@ public class PipelineRecalcPDOrchestrator { } log.info("throttler permits after acquire: {}", semaphore.availablePermits()); } - innerStart(pipeline); + innerStart(pipeline, after); } - private void innerStart(Pipeline pipeline) { + private void innerStart(Pipeline pipeline, Runnable after) { try { pipeline.start(pipelineExecutorService); - addCallback(pipeline); + addCallback(pipeline, after); } catch (Exception e) { log.error(ExceptionUtils.getStackTrace(e)); pipeline.close(); @@ -47,7 +46,7 @@ public class PipelineRecalcPDOrchestrator { } } - private void addCallback(Pipeline pipeline) { + private void addCallback(Pipeline pipeline, Runnable after) { pipeline.getTerminator() .doneFuture() .orTimeout(creditTrackerSettings.getPipeline().globalTimeout().toMillis(), TimeUnit.MILLISECONDS) @@ -55,7 +54,7 @@ public class PipelineRecalcPDOrchestrator { try { long finishTime = System.currentTimeMillis(); log.info("pipeline time passed: {} ms", finishTime - pipeline.getStartTime()); - EmptyTerminatePayload res = (EmptyTerminatePayload) v; + after.run(); } catch (Exception ex) { log.error("pipeline finished with error{}", ExceptionUtils.getStackTrace(ex)); } finally { diff --git a/src/main/java/ru/nbch/credit_tracker/service/task/impl/PipelineMode.java b/src/main/java/ru/nbch/credit_tracker/service/task/impl/PipelineMode.java index 3aa221e..28f658f 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/task/impl/PipelineMode.java +++ b/src/main/java/ru/nbch/credit_tracker/service/task/impl/PipelineMode.java @@ -9,5 +9,6 @@ public enum PipelineMode { DEFAULT, RESTORE, REPEATED_RESTORE, - RECALC_PERSONAL_DATA + RECALC_PERSONAL_DATA, + MAKE_XML_BY_REPEATED } diff --git a/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java b/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java index 93716a2..9c62e99 100644 --- a/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java +++ b/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java @@ -73,16 +73,20 @@ public class CTUtil { } } - public static String normalize(String value) { + public static String normalize(String value, String idType, String idType2) { if (StringUtils.isBlank(value)) { return null; } - return value.replaceAll("[^0-9]", ""); + if (idType.equals("21") || idType2.equals("21")) { + return value.replaceAll("[^0-9]", ""); + } else { + return value.replaceAll("[^А-Яа-яA-Za-z0-9]", ""); + } } public static String normalizePassport(Id id) { - String normSerNum = normalize(id.getSerNum()); - String normIdNum = normalize(id.getIdNum()); + String normSerNum = normalize(id.getSerNum(), id.getIdType(), id.getIdType2()); + String normIdNum = normalize(id.getIdNum(), id.getIdType(), id.getIdType2()); return StringUtils.isNotBlank(normSerNum) ? normSerNum + normIdNum : normIdNum; } diff --git a/src/test/java/ru/nbch/credit_tracker/utils/CTUtilTest.java b/src/test/java/ru/nbch/credit_tracker/utils/CTUtilTest.java index a5fdde6..da27ec3 100644 --- a/src/test/java/ru/nbch/credit_tracker/utils/CTUtilTest.java +++ b/src/test/java/ru/nbch/credit_tracker/utils/CTUtilTest.java @@ -1,14 +1,13 @@ package ru.nbch.credit_tracker.utils; +import java.time.LocalDateTime; +import java.util.stream.Stream; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.springframework.boot.test.context.SpringBootTest; -import java.time.LocalDateTime; -import java.util.stream.Stream; - @SpringBootTest public class CTUtilTest { @@ -155,6 +154,6 @@ public class CTUtilTest { @ParameterizedTest(name = "[{index}] STR: [ {0} ] EXPECTED: [ {1} ]") @MethodSource("normalizingTestCases") void normalizeTest(String str, String expected) { - Assertions.assertEquals(expected, CTUtil.normalize(str)); + Assertions.assertEquals(expected, CTUtil.normalize(str, "21", "21")); } }