diff --git a/src/main/java/ru/nbch/credit_tracker/CreditTrackerApplication.java b/src/main/java/ru/nbch/credit_tracker/CreditTrackerApplication.java index 97b975d..16a7f19 100644 --- a/src/main/java/ru/nbch/credit_tracker/CreditTrackerApplication.java +++ b/src/main/java/ru/nbch/credit_tracker/CreditTrackerApplication.java @@ -4,14 +4,14 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext; import ru.nbch.credit_tracker.service.MonitoringService; -import ru.nbch.credit_tracker.service.UpdateProcessingPackagesService; +import ru.nbch.credit_tracker.service.StartupRestoreService; @SpringBootApplication public class CreditTrackerApplication { public static void main(String[] args) { ConfigurableApplicationContext ctx = SpringApplication.run(CreditTrackerApplication.class, args); - UpdateProcessingPackagesService updateProcessingPackagesService = ctx.getBean(UpdateProcessingPackagesService.class); + StartupRestoreService updateProcessingPackagesService = ctx.getBean(StartupRestoreService.class); MonitoringService monitoringService = ctx.getBean(MonitoringService.class); updateProcessingPackagesService.run(); monitoringService.run(); diff --git a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java index 60713fa..b355e68 100644 --- a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java +++ b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java @@ -241,9 +241,11 @@ public class SignalFacadeV3 { throw clientExcp(deleteStatusError(status), XmlErrorFormat.MonitoringPackageDeleteError, packageName); } - boolean successfullyDeleted = signalRestService.deletePackage(username, packageName); - if (!successfullyDeleted) { - throw clientExcp(SignalError.ERROR_017, XmlErrorFormat.MonitoringPackageDeleteError, packageName); + if (status == Status.ON_MONITORING) { + boolean successfullyDeleted = signalRestService.deletePackage(username, packageName); + if (!successfullyDeleted) { + throw clientExcp(SignalError.ERROR_017, XmlErrorFormat.MonitoringPackageDeleteError, packageName); + } } LocalDateTime deactivatedAt = LocalDateTime.now(); diff --git a/src/main/java/ru/nbch/credit_tracker/mapper/signal/UserPackageMapper.java b/src/main/java/ru/nbch/credit_tracker/mapper/signal/UserPackageMapper.java index 9ab791e..4323aaa 100644 --- a/src/main/java/ru/nbch/credit_tracker/mapper/signal/UserPackageMapper.java +++ b/src/main/java/ru/nbch/credit_tracker/mapper/signal/UserPackageMapper.java @@ -11,12 +11,6 @@ public interface UserPackageMapper { boolean isPackageNotUnique(@Param("userId") String userId, @Param("packageName") String packageName); - boolean isPackageExists(@Param("userId") String userId, @Param("packageName") String packageName, @Param("status") String status); - - boolean hasActivePackages(@Param("userId") String userId, @Param("packageName") String packageName, @Param("statuses") List statuses); - - void deletePackage(@Param("userId") String userId, @Param("packageName") String packageName, @Param("status") String newStatus, @Param("previousStatus") String previousStatus, @Param("deactivatedAt") LocalDateTime deactivatedAt); - void deletePackageById(@Param("id") Long id, @Param("status") String newStatus, @Param("deactivatedAt") LocalDateTime deactivatedAt); Long insertPackage(@Param("userPackage") UserPackage userPackage); @@ -26,6 +20,7 @@ public interface UserPackageMapper { void updatePackageLastDownloadedReport(@Param("id") Long id, @Param("fileName") String fileName); void updatePackageOnMonitoringSuccess(@Param("id") Long id, @Param("monitoringAt") LocalDateTime monitoringAt); + void updateNoFidMonitoring(@Param("id") Long id); void setLastSearchedDt(@Param("id") Long id); void setFidChanged(@Param("packageIds") List id); @@ -37,6 +32,7 @@ public interface UserPackageMapper { List findAllPackagesByStatus(@Param("statuses") String... statuses); List findAllPackagesByUserId(@Param("userId") String userId); + List findOnMonitoringPackages(); List findByMemberCodeAndPackageName(@Param("memberCode") String memberCode, @Param("packageName") String packageName); diff --git a/src/main/java/ru/nbch/credit_tracker/service/UpdateProcessingPackagesService.java b/src/main/java/ru/nbch/credit_tracker/service/StartupRestoreService.java similarity index 78% rename from src/main/java/ru/nbch/credit_tracker/service/UpdateProcessingPackagesService.java rename to src/main/java/ru/nbch/credit_tracker/service/StartupRestoreService.java index 17beb63..1fab93f 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/UpdateProcessingPackagesService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/StartupRestoreService.java @@ -2,7 +2,6 @@ package ru.nbch.credit_tracker.service; import java.nio.file.Path; import java.util.List; -import java.util.concurrent.ExecutorService; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.stereotype.Service; @@ -27,39 +26,45 @@ import ru.nbch.credit_tracker.utils.error.ExceptionUtils; @Slf4j @Service @EnableAspectJAutoProxy(exposeProxy = true) -public class UpdateProcessingPackagesService { +public class StartupRestoreService { private final UserPackageMapper userPackageMapper; private final PackagesRecordsMapper phoneFidMapMapper; private final PipelinePackageFabric pipelinePackageManager; private final PipelinePackageOrchestrator pipelineOrchestrator; private final CreditTrackerSettings creditTrackerSettings; + private final MonitoringErrorProcesingService monitoringErrorProcesingService; private final Saver saver; - private final ExecutorService pipelineExecutorService; - private final ExecutorService saverExecutorService; - public UpdateProcessingPackagesService(UserPackageMapper userPackageMapper, - PackagesRecordsMapper phoneFidMapMapper, - PipelinePackageFabric pipelinePackageManager, PipelinePackageOrchestrator pipelineOrchestrator, - CreditTrackerSettings creditTrackerSettings, - Saver saver, - ExecutorService pipelineExecutorService, - ExecutorService saverExecutorService) { + public StartupRestoreService(UserPackageMapper userPackageMapper, + PackagesRecordsMapper phoneFidMapMapper, + PipelinePackageFabric pipelinePackageManager, + PipelinePackageOrchestrator pipelineOrchestrator, + CreditTrackerSettings creditTrackerSettings, + MonitoringErrorProcesingService monitoringErrorProcesingService, + Saver saver) { this.userPackageMapper = userPackageMapper; this.phoneFidMapMapper = phoneFidMapMapper; this.pipelinePackageManager = pipelinePackageManager; this.pipelineOrchestrator = pipelineOrchestrator; this.creditTrackerSettings = creditTrackerSettings; + this.monitoringErrorProcesingService = monitoringErrorProcesingService; this.saver = saver; - this.pipelineExecutorService = pipelineExecutorService; - this.saverExecutorService = saverExecutorService; } public void run() { + onMonitoringRestore(); acceptedRestore(); processingRestore(); } + private void onMonitoringRestore() { + List packages = userPackageMapper.findOnMonitoringPackages(); + packages.forEach(userPackage -> { + monitoringErrorProcesingService.findErrors(userPackage.getId()); + }); + } + private void acceptedRestore() { List packages = userPackageMapper.findAllPackagesByStatus(Status.ACCEPTED.name()); log.debug("Found {} packages in status ACCEPTED", packages.size()); @@ -81,7 +86,7 @@ public class UpdateProcessingPackagesService { } private void processingRestore() { - List packages = userPackageMapper.findAllPackagesByStatus(Status.PROCESSING.name()); + List packages = userPackageMapper.findAllPackagesByStatus(Status.PROCESSING.name(), Status.PROCESSING_REPEATED.name()); packages = packages.stream().filter(userPackage -> userPackage.getRejectStatus() == null).toList(); log.debug("Found {} packages in status PROCESSING and rejected_status = null", packages.size()); for (UserPackage userPackage : packages) { diff --git a/src/main/java/ru/nbch/credit_tracker/service/task/PipelinePackageOrchestrator.java b/src/main/java/ru/nbch/credit_tracker/service/task/PipelinePackageOrchestrator.java index bafd457..40be194 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/task/PipelinePackageOrchestrator.java +++ b/src/main/java/ru/nbch/credit_tracker/service/task/PipelinePackageOrchestrator.java @@ -11,7 +11,6 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; import ru.nbch.credit_tracker.enums.RejectedStatus; -import ru.nbch.credit_tracker.enums.Status; import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper; import ru.nbch.credit_tracker.model.impl.PackageVariable; import ru.nbch.credit_tracker.model.impl.SignalXmlFilePayload; @@ -119,7 +118,7 @@ public class PipelinePackageOrchestrator { } if (res.signalXmlFilePath() == null) { log.info("No one fid was found by packageId : {}; xml file won't be sent", packageId); - userPackageMapper.updatePackageStatus(packageId, Status.NO_FID.name()); + userPackageMapper.updateNoFidMonitoring(packageId); return; } diff --git a/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml b/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml index 78a2972..3470183 100644 --- a/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml @@ -96,6 +96,12 @@ WHERE id = #{id} + + UPDATE signals_user_packages + SET monitoring_at = created_at, status = 'NO_FID', fid_changed = null + WHERE id = #{id} + + UPDATE signals_user_packages SET last_searched_at = now() @@ -141,6 +147,23 @@ WHERE fid_changed = 1 and status = 'PROCESSING_REPEATED' + + +