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