http://jira.mfd.msk:8088/browse/BKI-3246 Added signal_user_packages.monitoring_at column; Added monitoring_at setup logic

This commit is contained in:
Mikhail Trofimov 2025-10-10 14:21:41 +03:00
parent f950f98536
commit 9253dd3f19
9 changed files with 36 additions and 8 deletions

View file

@ -17,4 +17,5 @@ public class UserPackage {
private String status;
private LocalDateTime deactivatedAt;
private String lastDownloadedReport;
private LocalDateTime monitoringAt;
}

View file

@ -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);

View file

@ -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<UserPackage> findUserPackages(@Param("userId") String userId, @Param("statuses") List<String> status);

View file

@ -201,6 +201,10 @@ public class SignalService {
userPackageService.updatePackageStatus(packageId, status);
}
public void updatePackageMonitoringAt(Integer packageId, LocalDateTime monitoringAt) {
userPackageService.updateMonitoringAt(packageId, monitoringAt);
}
/**
* Формирует файл запроса в официальный сервис сигналов, выгружая паспортные данные пачками и сразу записывая их в файл
*

View file

@ -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<PhoneFidMap> 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);

View file

@ -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);
}

View file

@ -13,6 +13,7 @@
<result property="status" column="status"/>
<result property="deactivatedAt" column="deactivated_at"/>
<result property="lastDownloadedReport" column="last_downloaded_report"/>
<result property="monitoringAt" column="monitoring_at"/>
</resultMap>
<select id="isPackageNotUnique" resultType="boolean">
@ -69,9 +70,15 @@
WHERE id = #{id}
</update>
<update id="updateMonitoringAt">
UPDATE signals_user_packages
SET monitoring_at = #{monitoringAt}
WHERE id = #{id}
</update>
<select id="findPackage" resultMap="packageDataResultMap"
resultType="ru.nbch.credit_tracker.entities.dto.UserPackage">
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="findUserPackages" resultMap="packageDataResultMap"
resultType="ru.nbch.credit_tracker.entities.dto.UserPackage">
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}
@ -91,7 +98,7 @@
<select id="findAllPackagesByUserId" resultMap="packageDataResultMap"
resultType="ru.nbch.credit_tracker.entities.dto.UserPackage">
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 @@
<select id="findAllPackagesByStatus" resultMap="packageDataResultMap"
resultType="ru.nbch.credit_tracker.entities.dto.UserPackage">
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 status = #{status}
</select>

View file

@ -0,0 +1,2 @@
alter table signals_user_packages
add "monitoring_at" timestamp;