Added comments for SignalService

This commit is contained in:
Mikhail Trofimov 2025-07-24 15:40:02 +03:00
parent 7120fd9dd2
commit 997bcc6c4a

View file

@ -82,6 +82,9 @@ public class SignalService {
log.info("Subjects were registered. PackageId: {}", packageId);
}
/**
* Обрабатывает все PhoneFidMap по packageId, выгружая их пачками и фильтруя по переданному фильтру
*/
public boolean updateSubjects(Integer packageId, Predicate<PhoneFidMap> filter) {
boolean updated = false;
int offset = 0;
@ -108,6 +111,9 @@ public class SignalService {
return updated;
}
/**
* Обрабатывает пачку PhoneFidMap: обновляет фиды и флаги просрочек
*/
public void updateFlags(List<PhoneFidMap> subjects, Integer packageId) {
if (subjects.isEmpty()) {
return;
@ -169,6 +175,10 @@ public class SignalService {
userPackageService.updatePackageStatus(packageId, status);
}
/**
* Формирует файл запроса в официальный сервис сигналов, выгружая паспортные данные пачками и сразу записывая их в файл
* @return Путь к файлу запроса к официальному сервису сигналов на постановку на мониторинг
*/
public String writeSignals(Integer packageId, Predicate<PhoneFidMap> filter) {
String folderPath = config.getLoadDir() + File.separator + "tmp_folder" + File.separator + packageId + File.separator;
String filePath = folderPath + UUID.randomUUID() + "_output.xml";
@ -194,11 +204,13 @@ public class SignalService {
Auth auth = new Auth();
auth.setUser(config.getSignalsuser());
signals.setAuth(auth);
return signals;
}
/**
* Обрабатывает все PhoneFidMap по packageId, выгружая их пачками и фильтруя по переданному фильтру.
* writer записывает пачку сразу в файл
*/
private void buildPersons(Integer packageId, Predicate<PhoneFidMap> filter, Consumer<List<Person>> writer) {
int offset = 0;
List<PhoneFidMap> batch;
@ -211,13 +223,16 @@ public class SignalService {
persons = findPersons(batch);
}
if (!persons.isEmpty()) {
writer.accept(persons);
writer.accept(persons); // записывает пачку Persons в файл
}
offset += batchSize;
} while (!batch.isEmpty());
}
/**
* Формирует список Person для постановки на мониторинг в официальный сервис сигналов на основе списка PhoneFidMap
*/
private List<Person> findPersons(List<PhoneFidMap> subjects) {
if (subjects.isEmpty()) {
return Collections.emptyList();