diff --git a/docker_compose/credit_tracker_config.env b/docker_compose/credit_tracker_config.env index 2da90df..a974963 100644 --- a/docker_compose/credit_tracker_config.env +++ b/docker_compose/credit_tracker_config.env @@ -1,5 +1,5 @@ #commons -APP_VERSION=1.21 +APP_VERSION=1.22 REGISTRY_URL=rh8-vm3.nbki.msk:5000 JMX_PORT= JMX_HOSTNAME= diff --git a/pom.xml b/pom.xml index f47870c..384411b 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ ru.nbch credit-tracker - 1.21 + 1.22 credit_tracker Credit Tracker Application diff --git a/src/main/java/ru/nbch/credit_tracker/mapper/signal/PhoneFidMapMapper.java b/src/main/java/ru/nbch/credit_tracker/mapper/signal/PhoneFidMapMapper.java index baa721f..7ec9c0c 100644 --- a/src/main/java/ru/nbch/credit_tracker/mapper/signal/PhoneFidMapMapper.java +++ b/src/main/java/ru/nbch/credit_tracker/mapper/signal/PhoneFidMapMapper.java @@ -21,4 +21,5 @@ public interface PhoneFidMapMapper { PhoneFidMap findPhoneFidMapById(@Param("id") Long packageId); boolean hasNonNullFids(@Param("packageId") Long packageId); + boolean hasOldRow(@Param("packageId") Long packageId, @Param("daysCount") Integer daysCount); } diff --git a/src/main/java/ru/nbch/credit_tracker/service/UpdatingFlagsService.java b/src/main/java/ru/nbch/credit_tracker/service/UpdatingFlagsService.java index a62e62e..a5a7df3 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/UpdatingFlagsService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/UpdatingFlagsService.java @@ -1,22 +1,20 @@ package ru.nbch.credit_tracker.service; -import lombok.extern.slf4j.Slf4j; -import org.slf4j.MDC; -import org.springframework.scheduling.concurrent.CustomizableThreadFactory; -import org.springframework.stereotype.Service; -import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; -import ru.nbch.credit_tracker.entities.dto.PhoneFidMap; -import ru.nbch.credit_tracker.entities.dto.UserPackage; -import ru.nbch.credit_tracker.enums.Status; -import ru.nbch.credit_tracker.service.signal.SignalRestService; - import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; -import java.util.function.Predicate; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.MDC; +import org.springframework.scheduling.concurrent.CustomizableThreadFactory; +import org.springframework.stereotype.Service; +import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; +import ru.nbch.credit_tracker.entities.dto.UserPackage; +import ru.nbch.credit_tracker.enums.Status; +import ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper; +import ru.nbch.credit_tracker.service.signal.SignalRestService; /** * Сервис периодического обновления фидов и флагов просрочек по пакетам находящимся в статусе ON_MONITORING @@ -31,16 +29,19 @@ public class UpdatingFlagsService { private final MonitoringErrorProcesingService monitoringErrorProcesingService; private final Long daysToUpdateFlags; private final Long updateFlagsInterval; + private final PhoneFidMapMapper phoneFidMapMapper; public UpdatingFlagsService(SignalService signalService, SignalRestService signalRestService, MonitoringErrorProcesingService monitoringErrorProcesingService, - CreditTrackerSettings config) { + CreditTrackerSettings config, + PhoneFidMapMapper phoneFidMapMapper) { this.signalService = signalService; this.signalRestService = signalRestService; this.monitoringErrorProcesingService = monitoringErrorProcesingService; this.daysToUpdateFlags = config.getDaysToUpdateFlags() != null ? config.getDaysToUpdateFlags() : 1; this.updateFlagsInterval = config.getUpdateFlagsInterval() != null ? config.getUpdateFlagsInterval() : 1; + this.phoneFidMapMapper = phoneFidMapMapper; } public void run() { @@ -48,13 +49,17 @@ public class UpdatingFlagsService { scheduler.scheduleAtFixedRate(this::update, 0, updateFlagsInterval, TimeUnit.DAYS); } - private void update() { + public void update() { log.info("Start updating flags"); List packages = signalService.findPackagesOnMonitoring(); for (UserPackage userPackage : packages) { - log.info("Updating flags for Package {}", userPackage.getPackageName()); + log.info("Check on updating flags for Package {}", userPackage.getPackageName()); MDC.put("ru.nbch.credit_tracker.log.mdc.key", "[" + userPackage.getPackageName() +"]"); - updateFlags(userPackage); + boolean hasOldRow = phoneFidMapMapper.hasOldRow(userPackage.getId(), daysToUpdateFlags.intValue()); + log.info("There are {} old rows", hasOldRow ? "exist" : "doesn't exist"); + if (hasOldRow) { + updateFlags(userPackage); + } MDC.remove("ru.nbch.credit_tracker.log.mdc.key"); } log.info("Finish updating flags"); @@ -65,8 +70,7 @@ public class UpdatingFlagsService { String packageName = userPackage.getPackageName(); try { signalService.updatePackageStatus(packageId, Status.PROCESSING); - Predicate filter = subject -> subject.getCalculatedAt() != null && hasDaysPassed(subject.getCalculatedAt()); - SignalService.UpdateResult updateResult = signalService.updateSubjects(packageId, filter); + SignalService.UpdateResult updateResult = signalService.updateSubjects(packageId, null); if (updateResult.isUpdated()) { if (signalRestService.setupMonitoring(packageId)) { LocalDateTime monitoringAt = userPackage.getMonitoringAt() != null ? userPackage.getMonitoringAt() : LocalDateTime.now(); diff --git a/src/main/resources/mybatis/mapper/signal/PhoneFidMapMapper.xml b/src/main/resources/mybatis/mapper/signal/PhoneFidMapMapper.xml index 9d668d9..4fcda13 100644 --- a/src/main/resources/mybatis/mapper/signal/PhoneFidMapMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/PhoneFidMapMapper.xml @@ -88,5 +88,11 @@ where package_id = #{packageId} AND fid is not null - + \ No newline at end of file