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
ct.monitoring-interval=${MONITORING_INTERVAL:15}
# 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.db-version=${DB_VERSION:1234}

View file

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

View file

@ -6,7 +6,6 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutorService;
import javax.xml.stream.XMLStreamException;
@ -215,7 +214,9 @@ public class SignalFacadeV3 {
PackageAll pack = new PackageAll();
pack.setPackageName(data.getPackageName());
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())) {
pack.setDeactivatedAt(data.getDeactivatedAt() != null ? data.getDeactivatedAt().toString() : null);
}
@ -233,7 +234,7 @@ public class SignalFacadeV3 {
-> clientExcp(SignalError.ERROR_016, XmlErrorFormat.MonitoringPackageDeleteError, packageName));
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);
}

View file

@ -271,14 +271,16 @@ public class MonitoringService {
List<Hit> hits = new ArrayList<>();
response.getSubjects().getSubjects().forEach(subject -> {
subject.getSignals().getSignals().forEach(signal -> {
Hit hit = new Hit();
hit.setPackageId(userPackage.getId());
hit.setSubjectId(subject.getId());
hit.setPhone(Long.valueOf(subject.getClientId()));
hit.setSignalType(signal.getSignalType());
hit.setResponseSentAt(responseSentAt);
hit.setReportFileName(reportFileName.getFileName().toString());
hits.add(hit);
if (userPackage.getSignalTypes().contains(signal.getSignalType().toString())) {
Hit hit = new Hit();
hit.setPackageId(userPackage.getId());
hit.setSubjectId(subject.getId());
hit.setPhone(Long.valueOf(subject.getClientId()));
hit.setSignalType(signal.getSignalType());
hit.setResponseSentAt(responseSentAt);
hit.setReportFileName(reportFileName.getFileName().toString());
hits.add(hit);
}
});
if (!hits.isEmpty()) {
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()) {
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.2 set FID_CHANGED = 1 for this package(select by phone)

View file

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

View file

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