diff --git a/src/main/java/ru/nbch/credit_tracker/entities/dto/UserPackage.java b/src/main/java/ru/nbch/credit_tracker/entities/dto/UserPackage.java index f5cb245..eaf0665 100644 --- a/src/main/java/ru/nbch/credit_tracker/entities/dto/UserPackage.java +++ b/src/main/java/ru/nbch/credit_tracker/entities/dto/UserPackage.java @@ -17,4 +17,5 @@ public class UserPackage { private String status; private LocalDateTime deactivatedAt; private String lastDownloadedReport; + private LocalDateTime monitoringAt; } diff --git a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java index e904779..d569b2b 100644 --- a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java +++ b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java @@ -240,8 +240,10 @@ public class SignalFacade { return; } if (signalRestService.setupMonitoring(packageId)) { - log.info("Package was successfully registered in signal service. PackageId: {} PackageName: {}", packageId, packageName); + LocalDateTime monitoringAt = LocalDateTime.now(); + log.info("Package was successfully registered in signal service. PackageId: {} PackageName: {}, MonitoringAt: {}", packageId, packageName, monitoringAt); signalService.updatePackageStatus(packageId, Status.ON_MONITORING); + signalService.updatePackageMonitoringAt(packageId, monitoringAt); monitoringErrorProcesingService.findErrors(packageId); } else { log.info("Package registration was rejected by signal service. PackageId: {} PackageName: {}", packageId, packageName); 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 0540fa1..92b2091 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 @@ -24,6 +24,8 @@ public interface UserPackageMapper { void updatePackageLastDownloadedReport(@Param("id") Integer id, @Param("fileName") String fileName); + void updateMonitoringAt(@Param("id")Integer id, @Param("monitoringAt") LocalDateTime monitoringAt); + UserPackage findPackage(@Param("id") Integer id); List findUserPackages(@Param("userId") String userId, @Param("statuses") List status); diff --git a/src/main/java/ru/nbch/credit_tracker/service/SignalService.java b/src/main/java/ru/nbch/credit_tracker/service/SignalService.java index aa7d910..363b87f 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/SignalService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/SignalService.java @@ -201,6 +201,10 @@ public class SignalService { userPackageService.updatePackageStatus(packageId, status); } + public void updatePackageMonitoringAt(Integer packageId, LocalDateTime monitoringAt) { + userPackageService.updateMonitoringAt(packageId, monitoringAt); + } + /** * Формирует файл запроса в официальный сервис сигналов, выгружая паспортные данные пачками и сразу записывая их в файл * 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 3f05e3f..1afe512 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/UpdatingFlagsService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/UpdatingFlagsService.java @@ -54,21 +54,27 @@ public class UpdatingFlagsService { for (UserPackage userPackage : packages) { log.info("Updating flags for Package {}", userPackage.getPackageName()); MDC.put("ru.nbch.credit_tracker.log.mdc.key", "[" + userPackage.getPackageName() +"]"); - updateFlags(userPackage.getId(), userPackage.getPackageName()); + updateFlags(userPackage); MDC.remove("ru.nbch.credit_tracker.log.mdc.key"); } log.info("Finish updating flags"); } - private void updateFlags(Integer packageId, String packageName) { + private void updateFlags(UserPackage userPackage) { + Integer packageId = userPackage.getId(); + 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); if (updateResult.isUpdated()) { if (signalRestService.setupMonitoring(packageId)) { - log.info("Flags were updated successfully. PackageId: {} PackageName: {}. Package status changed to ON_MONITORING", packageId, packageName); + LocalDateTime monitoringAt = userPackage.getMonitoringAt() != null ? userPackage.getMonitoringAt() : LocalDateTime.now(); + log.info("Flags were updated successfully. PackageId: {} PackageName: {} MonitoringAt: {}. Package status changed to ON_MONITORING", packageId, packageName, monitoringAt); signalService.updatePackageStatus(packageId, Status.ON_MONITORING); + if (userPackage.getMonitoringAt() == null) { // пакет еще не был поставлен на мониторинг в оф. сервис сигналов + signalService.updatePackageMonitoringAt(packageId, monitoringAt); + } monitoringErrorProcesingService.findErrors(packageId); } else { log.info("Updated package registration was rejected by signal service. PackageId: {} PackageName: {}", packageId, packageName); diff --git a/src/main/java/ru/nbch/credit_tracker/service/signal/UserPackageService.java b/src/main/java/ru/nbch/credit_tracker/service/signal/UserPackageService.java index 2699ec6..4f4a2a7 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/signal/UserPackageService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/signal/UserPackageService.java @@ -46,6 +46,10 @@ public class UserPackageService { mapper.updatePackageLastDownloadedReport(id, fileName); } + public void updateMonitoringAt(Integer id, LocalDateTime monitoringAt) { + mapper.updateMonitoringAt(id, monitoringAt); + } + public UserPackage findPackage(Integer id) { return mapper.findPackage(id); } diff --git a/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml b/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml index 263aa5a..05d875d 100644 --- a/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml @@ -13,6 +13,7 @@ + - SELECT id, membercode, package_name, created_at, status, deactivated_at, last_downloaded_report + SELECT id, membercode, package_name, created_at, status, deactivated_at, last_downloaded_report, monitoring_at FROM signals_user_packages WHERE id = #{id} LIMIT 1 @@ -79,7 +86,7 @@ - SELECT id, membercode, package_name, created_at, status, deactivated_at, last_downloaded_report + SELECT id, membercode, package_name, created_at, status, deactivated_at, last_downloaded_report, monitoring_at FROM signals_user_packages WHERE membercode IS NOT NULL AND LEFT(membercode, 6) = #{userId} @@ -99,7 +106,7 @@ diff --git a/src/main/resources/sql/BKI-3246.ddl b/src/main/resources/sql/BKI-3246.ddl new file mode 100644 index 0000000..698e662 --- /dev/null +++ b/src/main/resources/sql/BKI-3246.ddl @@ -0,0 +1,2 @@ +alter table signals_user_packages + add "monitoring_at" timestamp; \ No newline at end of file diff --git a/src/main/resources/credit_tracker_db.ddl b/src/main/resources/sql/credit_tracker_db.ddl similarity index 100% rename from src/main/resources/credit_tracker_db.ddl rename to src/main/resources/sql/credit_tracker_db.ddl