From 09d7f531438787ba9f0aa9a1dc8bb10ca3a0c244 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Tue, 23 Dec 2025 20:09:05 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/BKI-3299 --- .../mapper/signal/PackagesRecordsMapper.java | 2 ++ .../service/MonitoringService.java | 26 +++++++++++-------- .../service/signal/PackageRecordsService.java | 6 ++++- .../ru/nbch/credit_tracker/utils/CTUtil.java | 11 +++++--- .../mapper/signal/PackageRecordsMapper.xml | 9 +++++++ 5 files changed, 38 insertions(+), 16 deletions(-) diff --git a/src/main/java/ru/nbch/credit_tracker/mapper/signal/PackagesRecordsMapper.java b/src/main/java/ru/nbch/credit_tracker/mapper/signal/PackagesRecordsMapper.java index ad57725..1da09cb 100644 --- a/src/main/java/ru/nbch/credit_tracker/mapper/signal/PackagesRecordsMapper.java +++ b/src/main/java/ru/nbch/credit_tracker/mapper/signal/PackagesRecordsMapper.java @@ -11,4 +11,6 @@ public interface PackagesRecordsMapper { List registerJson(@Param("json") String json); List findFullPhoneFidMap(@Param("packageId") Long packageId, @Param("limit") int limit, @Param("offset") int offset); Long deleteByPackageId(@Param("packageId") Long id); + + PackagesRecordsMap findById(Long id); } diff --git a/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java b/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java index f4d0e0b..45e47c1 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java @@ -20,8 +20,9 @@ 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.app.FlagDetail; import ru.nbch.credit_tracker.entities.app.Hit; +import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap; +import ru.nbch.credit_tracker.entities.app.PhonesMap; import ru.nbch.credit_tracker.entities.app.UserPackage; import ru.nbch.credit_tracker.entities.external_response.online_download.Inquiry; import ru.nbch.credit_tracker.entities.external_response.online_download.Person; @@ -198,7 +199,7 @@ public class MonitoringService { try (BufferedInputStream in = new BufferedInputStream(Files.newInputStream(loadedReportPath), 8 * 1024 * 1024)) { staxXmlProcessor.read(in, Persons.class, personsData -> { // как только считали пачку Persons сразу записали ее в результирующий файл - List subjectsBatch = processPersons(personsData.getPersons()); + List subjectsBatch = processPersons(personsData.getPersons(), userPackage); if (!subjectsBatch.isEmpty()) { generateResponse.compareAndSet(false, true); } @@ -220,17 +221,19 @@ public class MonitoringService { return responsePath.get(); } - private List processPersons(List persons) { + private List processPersons(List persons, UserPackage userPackage) { List subjects = new ArrayList<>(); for (Person person : persons) { Signals signals = new Signals(); for (Inquiry inquiry : person.getInquiries()) { // Отбираем только тех фл, у которых bus_category in (MFO, MKK, MFK) и есть сигналы с кодом 16 - if (!CTUtil.checkBusCategory(inquiry.getBusCategory()) || inquiry.getSignals().stream().noneMatch(signal -> signal.getN().equals(16))) { + Integer signalType = CTUtil.checkBusCategory(inquiry.getBusCategory()); + if (signalType == -1 || inquiry.getSignals().stream().noneMatch(signal -> signal.getN().equals(16)) || + !userPackage.getSignalTypes().contains(signalType.toString())) { continue; } Signal signal = new Signal(); - signal.setSignalType(1); // Код типа сигнала по внутреннему справочнику. В текущей версии: 1 = сигнал 16 от MFO/MKK/MFK + signal.setSignalType(signalType); // Код типа сигнала по внутреннему справочнику. В текущей версии: 1 = сигнал 16 от MFO/MKK/MFK signal.setInquiryDate(inquiry.getDate()); // Дата и время запроса КИ signal.setInquiryPurpose(inquiry.getInqP()); // Цель запроса КИ signals.getSignals().add(signal); @@ -238,13 +241,14 @@ public class MonitoringService { // Если есть хотя бы один заполненный сигнал, значит заполняем остальные данные if (!signals.getSignals().isEmpty()) { - FlagDetail flagDetail = flagDetailMapper.getByMapId(person.getUid()); - if (flagDetail != null) { + PackagesRecordsMap packagesRecord = packageRecordsService.findPackageRecordsById(person.getUid()); + PhonesMap cacheByPhone = packageRecordsService.findCachedByPhone(Long.valueOf(packagesRecord.getPhone())); + if (cacheByPhone != null) { Subject subject = new Subject(); - subject.setId(flagDetail.getSubjectId()); // Уникальный идентификатор субъекта (равен Id из XML-пакета при установке мониторинга) - subject.setClientId(flagDetail.getPhone()); - subject.setFlagDebt5000(flagDetail.getFlagDebt5000()); - subject.setFlag9012(flagDetail.getFlag90days()); + subject.setId(packagesRecord.getSubjectId()); // Уникальный идентификатор субъекта (равен Id из XML-пакета при установке мониторинга) + subject.setClientId(packagesRecord.getPhone()); + subject.setFlagDebt5000(cacheByPhone.getFlagDebt5000()); + subject.setFlag9012(cacheByPhone.getFlag90days()); subject.setSignals(signals); subjects.add(subject); } diff --git a/src/main/java/ru/nbch/credit_tracker/service/signal/PackageRecordsService.java b/src/main/java/ru/nbch/credit_tracker/service/signal/PackageRecordsService.java index f640708..d9e6e37 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/signal/PackageRecordsService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/signal/PackageRecordsService.java @@ -128,7 +128,11 @@ public class PackageRecordsService { } } - public PhonesMap findByPhone(Long phone) { + public PhonesMap findCachedByPhone(Long phone) { return phonesMapMapper.findByPhone(phone); } + + public PackagesRecordsMap findPackageRecordsById(Long id) { + return packagesRecordsMapper.findById(id); + } } diff --git a/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java b/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java index adaee2c..543e0f6 100644 --- a/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java +++ b/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java @@ -39,16 +39,19 @@ public class CTUtil { return null; } - public static boolean checkBusCategory(String busCategory) { + public static Integer checkBusCategory(String busCategory) { if (StringUtils.isBlank(busCategory)) { - return false; + return -1; } switch (busCategory) { case "MFO", "MKK", "MFK" -> { - return true; + return 1; + } + case "BANK" -> { + return 2; } default -> { - return false; + return -1; } } } diff --git a/src/main/resources/mybatis/mapper/signal/PackageRecordsMapper.xml b/src/main/resources/mybatis/mapper/signal/PackageRecordsMapper.xml index 3470efe..e4447ae 100644 --- a/src/main/resources/mybatis/mapper/signal/PackageRecordsMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/PackageRecordsMapper.xml @@ -13,6 +13,15 @@ +