etreschenkov 2026-01-16 12:28:25 +03:00
parent c135bf8481
commit 75366d7d54
8 changed files with 63 additions and 17 deletions

View file

@ -66,7 +66,8 @@ ct.load-dir=D:\\folder_name\\signals
# min # min
ct.monitoring-interval=${MONITORING_INTERVAL:15} ct.monitoring-interval=${MONITORING_INTERVAL:15}
# days # days
ct.update-flags-cron-expression=${UPDATE_FLAGS_CRON_EXPRESSION:0 0 22 * * *} ct.update-flags-cron-expression=${UPDATE_FLAGS_CRON_EXPRESSION:0 25 18 * * *}
ct.update-fid-cron-expression=${UPDATE_FLAGS_CRON_EXPRESSION:0 10 12 * * *}
ct.days-to-update-flags=${DAYS_TO_UPDATE_FLAGS:30} ct.days-to-update-flags=${DAYS_TO_UPDATE_FLAGS:30}
ct.db-version=${DB_VERSION:1234} ct.db-version=${DB_VERSION:1234}

View file

@ -15,9 +15,9 @@ public class CreditTrackerApplication {
UpdateProcessingPackagesService updateProcessingPackagesService = ctx.getBean(UpdateProcessingPackagesService.class); UpdateProcessingPackagesService updateProcessingPackagesService = ctx.getBean(UpdateProcessingPackagesService.class);
MonitoringService monitoringService = ctx.getBean(MonitoringService.class); MonitoringService monitoringService = ctx.getBean(MonitoringService.class);
UpdatingFlagsService updatingFlagsService = ctx.getBean(UpdatingFlagsService.class); UpdatingFlagsService updatingFlagsService = ctx.getBean(UpdatingFlagsService.class);
updatingFlagsService.update(); // updatingFlagsService.update();
// updateProcessingPackagesService.run(); updateProcessingPackagesService.run();
// monitoringService.run(); monitoringService.run();
} }
} }

View file

@ -6,7 +6,6 @@ import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.StandardCopyOption; import java.nio.file.StandardCopyOption;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamException;
@ -215,7 +214,9 @@ public class SignalFacadeV3 {
PackageAll pack = new PackageAll(); PackageAll pack = new PackageAll();
pack.setPackageName(data.getPackageName()); pack.setPackageName(data.getPackageName());
pack.setCreatedAt(data.getCreatedAt() != null ? data.getCreatedAt().toString() : null); pack.setCreatedAt(data.getCreatedAt() != null ? data.getCreatedAt().toString() : null);
pack.setStatus(data.getStatus()); String statusForClient = data.getStatus().equals(Status.ACCEPTED.name()) ? Status.PROCESSING.name() :
data.getStatus().equals(Status.PROCESSING_REPEATED.name()) ? Status.ON_MONITORING.name() : data.getStatus();
pack.setStatus(statusForClient);
if (data.getStatus().equals(Status.DELETED.name())) { if (data.getStatus().equals(Status.DELETED.name())) {
pack.setDeactivatedAt(data.getDeactivatedAt() != null ? data.getDeactivatedAt().toString() : null); pack.setDeactivatedAt(data.getDeactivatedAt() != null ? data.getDeactivatedAt().toString() : null);
} }
@ -233,7 +234,7 @@ public class SignalFacadeV3 {
-> clientExcp(SignalError.ERROR_016, XmlErrorFormat.MonitoringPackageDeleteError, packageName)); -> clientExcp(SignalError.ERROR_016, XmlErrorFormat.MonitoringPackageDeleteError, packageName));
Status status = EnumUtil.getEnum(Status.class, packageToDelete.getStatus()); Status status = EnumUtil.getEnum(Status.class, packageToDelete.getStatus());
if (!Arrays.asList(Status.ON_MONITORING, Status.PROCESSING_REPEATED).contains(status)) { if (!Status.ON_MONITORING.equals(status)) {
throw clientExcp(deleteStatusError(status), XmlErrorFormat.MonitoringPackageDeleteError, packageName); throw clientExcp(deleteStatusError(status), XmlErrorFormat.MonitoringPackageDeleteError, packageName);
} }

View file

@ -271,14 +271,16 @@ public class MonitoringService {
List<Hit> hits = new ArrayList<>(); List<Hit> hits = new ArrayList<>();
response.getSubjects().getSubjects().forEach(subject -> { response.getSubjects().getSubjects().forEach(subject -> {
subject.getSignals().getSignals().forEach(signal -> { subject.getSignals().getSignals().forEach(signal -> {
Hit hit = new Hit(); if (userPackage.getSignalTypes().contains(signal.getSignalType().toString())) {
hit.setPackageId(userPackage.getId()); Hit hit = new Hit();
hit.setSubjectId(subject.getId()); hit.setPackageId(userPackage.getId());
hit.setPhone(Long.valueOf(subject.getClientId())); hit.setSubjectId(subject.getId());
hit.setSignalType(signal.getSignalType()); hit.setPhone(Long.valueOf(subject.getClientId()));
hit.setResponseSentAt(responseSentAt); hit.setSignalType(signal.getSignalType());
hit.setReportFileName(reportFileName.getFileName().toString()); hit.setResponseSentAt(responseSentAt);
hits.add(hit); hit.setReportFileName(reportFileName.getFileName().toString());
hits.add(hit);
}
}); });
if (!hits.isEmpty()) { if (!hits.isEmpty()) {
hitsService.insertHits(hits); hitsService.insertHits(hits);

View file

@ -0,0 +1,38 @@
package ru.nbch.credit_tracker.service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.service.task.Pipeline;
import ru.nbch.credit_tracker.service.task.PipelinePackageFabric;
import ru.nbch.credit_tracker.service.task.PipelineRecalcPDOrchestrator;
import ru.nbch.credit_tracker.service.task.SetupParam;
import ru.nbch.credit_tracker.service.task.impl.PipelineMode;
@Slf4j
@Service
@EnableScheduling
public class UpdatingFidAndPdService {
private final PipelinePackageFabric pipelinePackageManager;
private final PipelineRecalcPDOrchestrator pipelineRecalcPDOrchestrator;
public UpdatingFidAndPdService(CreditTrackerSettings config,
PipelinePackageFabric pipelinePackageManager,
PipelineRecalcPDOrchestrator pipelineRecalcPDOrchestrator) {
this.pipelinePackageManager = pipelinePackageManager;
this.pipelineRecalcPDOrchestrator = pipelineRecalcPDOrchestrator;
}
@Scheduled(cron = "${ct.update-fid-cron-expression}")
public void update() {
log.info("Start updating fids and PD");
try {
Pipeline pipeline = pipelinePackageManager.buildRecalculationPD(new SetupParam(null, null, PipelineMode.RECALC_PERSONAL_DATA));
pipelineRecalcPDOrchestrator.startOrReject(pipeline);
} catch (Exception e) {
log.error("Failed to build pipeline", e);
}
}
}

View file

@ -73,7 +73,9 @@ public class FidNameUpdater implements Handler<SubjectPayload, SubjectPayload> {
if (!changingFids.isEmpty()) { if (!changingFids.isEmpty()) {
List<Long> packageIds = packageRecordsService.selectUniquePackageIds(changingFids); List<Long> packageIds = packageRecordsService.selectUniquePackageIds(changingFids);
userPackageService.setFidChanged(packageIds); if (!packageIds.isEmpty()) {
userPackageService.setFidChanged(packageIds);
}
} }
//2.set new fid name and id data in signals_phones_map //2.set new fid name and id data in signals_phones_map
//2.2 set FID_CHANGED = 1 for this package(select by phone) //2.2 set FID_CHANGED = 1 for this package(select by phone)

View file

@ -23,7 +23,7 @@
WHERE id = #{id} WHERE id = #{id}
</select> </select>
<select id="uniquePackageIdByPhones" resultType="java.util.List"> <select id="uniquePackageIdByPhones" resultType="java.lang.Long">
WITH src AS (SELECT phone WITH src AS (SELECT phone
FROM json_to_recordset(#{json}::json) AS t( FROM json_to_recordset(#{json}::json) AS t(
phone bigint phone bigint

View file

@ -13,6 +13,8 @@ alter table signals_user_packages
add EXTERNAL_PACKAGE_NAME varchar(255); add EXTERNAL_PACKAGE_NAME varchar(255);
alter table signals_user_packages alter table signals_user_packages
add FID_CHANGED smallint; add FID_CHANGED smallint;
alter table signals_packages_records
add phone_l bigint;
alter table signals_hits alter table signals_hits