From 5d09e25e87306054f413717b0abac106b8bf64b8 Mon Sep 17 00:00:00 2001 From: Mikhail Trofimov Date: Sat, 4 Jul 2026 18:33:48 +0300 Subject: [PATCH] LP: Added restore logic --- .../mapper/signal/LegalsFidMapMapper.java | 2 + .../mode/common/StartupRestoreService.java | 83 +++++++++++++------ .../mapper/signal/LegalsFidMapMapper.xml | 6 ++ 3 files changed, 66 insertions(+), 25 deletions(-) diff --git a/src/main/java/ru/nbch/credit_tracker/mapper/signal/LegalsFidMapMapper.java b/src/main/java/ru/nbch/credit_tracker/mapper/signal/LegalsFidMapMapper.java index 18884c3..146149b 100644 --- a/src/main/java/ru/nbch/credit_tracker/mapper/signal/LegalsFidMapMapper.java +++ b/src/main/java/ru/nbch/credit_tracker/mapper/signal/LegalsFidMapMapper.java @@ -14,4 +14,6 @@ public interface LegalsFidMapMapper { List findFullLegalFidMap(@Param("packageId") Long packageId, @Param("limit") int limit, @Param("offset") int offset); + + Long deleteByPackageId(@Param("packageId") Long id); } diff --git a/src/main/java/ru/nbch/credit_tracker/service/mode/common/StartupRestoreService.java b/src/main/java/ru/nbch/credit_tracker/service/mode/common/StartupRestoreService.java index a946f59..33468ea 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/mode/common/StartupRestoreService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/mode/common/StartupRestoreService.java @@ -6,11 +6,10 @@ import org.springframework.stereotype.Service; import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; import ru.nbch.credit_tracker.entities.app.UserPackage; import ru.nbch.credit_tracker.enums.Status; +import ru.nbch.credit_tracker.mapper.signal.LegalsFidMapMapper; import ru.nbch.credit_tracker.mapper.signal.PackagesRecordsMapper; import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper; -import ru.nbch.credit_tracker.service.task.NpPipelinePackageFabric; -import ru.nbch.credit_tracker.service.task.NpPipelinePackageOrchestrator; -import ru.nbch.credit_tracker.service.task.SetupParam; +import ru.nbch.credit_tracker.service.task.*; import ru.nbch.credit_tracker.service.task.impl.PipelineMode; import ru.nbch.credit_tracker.service.task.impl.Saver; import ru.nbch.credit_tracker.utils.CTUtil; @@ -31,21 +30,30 @@ public class StartupRestoreService { private final UserPackageMapper userPackageMapper; private final PackagesRecordsMapper phoneFidMapMapper; + private final LegalsFidMapMapper legalsFidMapMapper; private final NpPipelinePackageFabric npPipelinePackageManager; - private final NpPipelinePackageOrchestrator pipelineOrchestrator; + private final NpPipelinePackageOrchestrator npPipelineOrchestrator; + private final LpPipelinePackageFabric lpPipelinePackageManager; + private final LpPipelinePackageOrchestrator lpPipelineOrchestrator; private final CreditTrackerSettings creditTrackerSettings; private final Saver saver; public StartupRestoreService(UserPackageMapper userPackageMapper, PackagesRecordsMapper phoneFidMapMapper, + LegalsFidMapMapper legalsFidMapMapper, NpPipelinePackageFabric npPipelinePackageManager, - NpPipelinePackageOrchestrator pipelineOrchestrator, + NpPipelinePackageOrchestrator npPipelineOrchestrator, + LpPipelinePackageFabric lpPipelinePackageManager, + LpPipelinePackageOrchestrator lpPipelineOrchestrator, CreditTrackerSettings creditTrackerSettings, Saver saver) { this.userPackageMapper = userPackageMapper; this.phoneFidMapMapper = phoneFidMapMapper; + this.legalsFidMapMapper = legalsFidMapMapper; this.npPipelinePackageManager = npPipelinePackageManager; - this.pipelineOrchestrator = pipelineOrchestrator; + this.npPipelineOrchestrator = npPipelineOrchestrator; + this.lpPipelinePackageManager = lpPipelinePackageManager; + this.lpPipelineOrchestrator = lpPipelineOrchestrator; this.creditTrackerSettings = creditTrackerSettings; this.saver = saver; } @@ -53,25 +61,40 @@ public class StartupRestoreService { public void run() { acceptedRestore(); processingRestore(); - // TODO LP } private void acceptedRestore() { List packages = userPackageMapper.findAllPackagesByStatus(Status.ACCEPTED.name()); log.debug("Found {} packages in status ACCEPTED", packages.size()); for (UserPackage userPackage : packages) { - try { - Long count = phoneFidMapMapper.deleteByPackageId(userPackage.getId()); - log.trace("Deleted {} rows", count); - Path xmlReqPath = CTUtil.workingPathToReqByPackage(creditTrackerSettings.getLoadDir(), userPackage); - log.debug("Try to read and build pipeline for packageId {}; req xml path: {}", userPackage.getId(), xmlReqPath); - Pipeline pipeline = npPipelinePackageManager.build(new SetupParam(userPackage.getId(), 1, PipelineMode.DEFAULT)); - pipelineOrchestrator.startOrDelay( - () -> saver.readAndSaveNpPackage(userPackage.getId(), xmlReqPath), - pipeline, userPackage.getId() - ); - } catch (Exception e) { - log.error("Error build default pipeline for packageId {}: {}", userPackage.getId(), ExceptionUtils.getStackTrace(e)); + if (userPackage.getSubjectType() == 1) { + try { + Long count = phoneFidMapMapper.deleteByPackageId(userPackage.getId()); + log.trace("Deleted {} np rows", count); + Path xmlReqPath = CTUtil.workingPathToReqByPackage(creditTrackerSettings.getLoadDir(), userPackage); + log.debug("Try to read and build pipeline for packageId {}; req xml path: {}", userPackage.getId(), xmlReqPath); + Pipeline pipeline = npPipelinePackageManager.build(new SetupParam(userPackage.getId(), 1, PipelineMode.DEFAULT)); + npPipelineOrchestrator.startOrDelay( + () -> saver.readAndSaveNpPackage(userPackage.getId(), xmlReqPath), + pipeline, userPackage.getId() + ); + } catch (Exception e) { + log.error("Error build default np pipeline for packageId {}: {}", userPackage.getId(), ExceptionUtils.getStackTrace(e)); + } + } else { + try { + Long count = legalsFidMapMapper.deleteByPackageId(userPackage.getId()); + log.trace("Deleted {} lp rows", count); + Path xmlReqPath = CTUtil.workingPathToReqByPackage(creditTrackerSettings.getLoadDir(), userPackage); + log.debug("Try to read and build lp pipeline for packageId {}; req xml path: {}", userPackage.getId(), xmlReqPath); + Pipeline pipeline = lpPipelinePackageManager.build(new SetupParam(userPackage.getId(), 2, PipelineMode.DEFAULT)); + lpPipelineOrchestrator.startOrDelay( + () -> saver.readAndSaveNpPackage(userPackage.getId(), xmlReqPath), + pipeline, userPackage.getId() + ); + } catch (Exception e) { + log.error("Error build default lp pipeline for packageId {}: {}", userPackage.getId(), ExceptionUtils.getStackTrace(e)); + } } } } @@ -80,12 +103,22 @@ public class StartupRestoreService { List packages = userPackageMapper.findAllPackagesByStatus(Status.PROCESSING.name(), Status.PROCESSING_REPEATED.name()); log.debug("Found {} packages in status PROCESSING", packages.size()); for (UserPackage userPackage : packages) { - try { - log.debug("Build pipeline for packageId {}", userPackage.getId()); - Pipeline pipeline = npPipelinePackageManager.build(new SetupParam(userPackage.getId(), 1, PipelineMode.DEFAULT)); - pipelineOrchestrator.startOrDelay(pipeline, userPackage.getId()); - } catch (Exception e) { - log.error("Error build restore pipeline for packageId {}: {}", userPackage.getId(), ExceptionUtils.getStackTrace(e)); + if (userPackage.getSubjectType() == 1) { + try { + log.debug("Build np pipeline for packageId {}", userPackage.getId()); + Pipeline pipeline = npPipelinePackageManager.build(new SetupParam(userPackage.getId(), 1, PipelineMode.DEFAULT)); + npPipelineOrchestrator.startOrDelay(pipeline, userPackage.getId()); + } catch (Exception e) { + log.error("Error build restore np pipeline for packageId {}: {}", userPackage.getId(), ExceptionUtils.getStackTrace(e)); + } + } else { + try { + log.debug("Build lp pipeline for packageId {}", userPackage.getId()); + Pipeline pipeline = lpPipelinePackageManager.build(new SetupParam(userPackage.getId(), 2, PipelineMode.DEFAULT)); + lpPipelineOrchestrator.startOrDelay(pipeline, userPackage.getId()); + } catch (Exception e) { + log.error("Error build restore lp pipeline for packageId {}: {}", userPackage.getId(), ExceptionUtils.getStackTrace(e)); + } } } } diff --git a/src/main/resources/mybatis/mapper/signal/LegalsFidMapMapper.xml b/src/main/resources/mybatis/mapper/signal/LegalsFidMapMapper.xml index effa12e..a40b141 100644 --- a/src/main/resources/mybatis/mapper/signal/LegalsFidMapMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/LegalsFidMapMapper.xml @@ -49,4 +49,10 @@ LIMIT #{limit} OFFSET #{offset} + + DELETE + FROM signals_legal_fid_map + WHERE package_id = #{packageId} + + \ No newline at end of file