diff --git a/src/main/java/ru/nbch/credit_tracker/service/SignalService.java b/src/main/java/ru/nbch/credit_tracker/service/SignalService.java index 2288bd9..7469e56 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/SignalService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/SignalService.java @@ -119,32 +119,32 @@ public class SignalService { return; } log.info("Start calculating fids and flags for subjects batch. PackageId: {}", packageId); - List fidsPhoneDataList = phoneService.findFidsPhoneData(subjects); + Map fidsMap = phoneService.findFidsPhoneData(subjects); LocalDateTime calculatedAt = LocalDateTime.now(); - Map flagsDataMap = flagsService.findFlags(fidsPhoneDataList.stream().map(PhoneService.FidsPhoneData::getFid).filter(Objects::nonNull).toList()); + Map flagsDataMap = flagsService.findFlags(fidsMap.values().stream().filter(Objects::nonNull).toList()); List subjectToUpdate = new ArrayList<>(); - fidsPhoneDataList.forEach(data -> { - PhoneFidMap subject; - if (data.getFid() != null) { - FlagsService.FlagsData flagsData = flagsDataMap.get(data.getFid()); + subjects.forEach(subject -> { + Integer fid = fidsMap.get("9" + subject.getPhone()); + if (fid != null) { + FlagsService.FlagsData flagsData = flagsDataMap.get(fid); subject = PhoneFidMap.builder() - .id(data.getId()) + .id(subject.getId()) .packageId(packageId) - .subjectId(data.getSubjectId()) - .phone(data.getPhone()) - .fid(data.getFid()) + .subjectId(subject.getSubjectId()) + .phone(subject.getPhone()) + .fid(fid) .flagDebt5000(flagsData.getFlagDebt5000()) .flag90days(flagsData.getFlag90days()) .calculatedAt(calculatedAt) .build(); } else { subject = PhoneFidMap.builder() - .id(data.getId()) + .id(subject.getId()) .packageId(packageId) - .subjectId(data.getSubjectId()) - .phone(data.getPhone()) + .subjectId(subject.getSubjectId()) + .phone(subject.getPhone()) .calculatedAt(calculatedAt) .build(); } diff --git a/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService.java b/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService.java index 605a4d5..d063be1 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService.java @@ -1,6 +1,5 @@ package ru.nbch.credit_tracker.service.indic; -import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import org.springframework.stereotype.Service; @@ -8,7 +7,10 @@ import ru.nbch.credit_tracker.entities.dto.PhoneFidMap; import ru.nbch.credit_tracker.mapper.indic.PhoneMapper; import java.time.LocalDate; -import java.util.*; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; @Service @@ -20,24 +22,13 @@ public class PhoneService { this.mapper = mapper; } - public List findFidsPhoneData(List subjects) { - List fidsPhoneDataList = new ArrayList<>(); - + /** + * Ищет фиды по номерам телефона + * @return Map: key - номер телефона; value - fid + */ + public Map findFidsPhoneData(List subjects) { List phones = subjects.stream().map(subject -> "9" + subject.getPhone()).toList(); - List fidsData = mapper.findFids(phones); - Map fidsMap = convertFidsDataToMap(fidsData); - - subjects.forEach(subject -> { - String phone = "9" + subject.getPhone(); - Integer fid = fidsMap.get(phone); - if (fid != null) { - fidsPhoneDataList.add(new FidsPhoneData(subject.getId(), fid, subject.getPhone(), subject.getSubjectId())); - } else { - fidsPhoneDataList.add(new FidsPhoneData(subject.getId(), null, subject.getPhone(), subject.getSubjectId())); - } - }); - - return fidsPhoneDataList; + return convertFidsDataToMap(mapper.findFids(phones)); } private Map convertFidsDataToMap(List fidsData) { @@ -57,16 +48,6 @@ public class PhoneService { )); } - @Getter - @Setter - @AllArgsConstructor - public static class FidsPhoneData { - private Integer id; - private Integer fid; - private String phone; - private String subjectId; - } - @Getter @Setter public static class FidsData {