From 769fabf79aff3c57f020830b6ba0fd1268d35e8f Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Thu, 2 Oct 2025 11:50:36 +0300 Subject: [PATCH] fix merging fids and phones --- .../service/indic/PhoneService2.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService2.java b/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService2.java index ab392ee..85233cf 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService2.java +++ b/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService2.java @@ -5,6 +5,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; @@ -90,6 +91,34 @@ public class PhoneService2 { return phoneFidMap; } + private Map merger(List subjects, List phonesByFid) { + Map phoneFidMap = new HashMap<>(); + Iterator iterator = phonesByFid.iterator(); + String lastUniquePhone = null; + FidsData fidsData = null; + for (PhoneFidMap phoneFid : subjects) { + String normalizedPhone = 9 + phoneFid.getPhone(); + while (iterator.hasNext()) { + fidsData = iterator.next(); + if (StringUtils.isNotEmpty(lastUniquePhone) && lastUniquePhone.equals(fidsData.getPhone())) { + iterator.remove(); + continue; + } + if (fidsData.getPhone().equals(normalizedPhone) || normalizedPhone.equals(lastUniquePhone)) { + lastUniquePhone = fidsData.getPhone(); + iterator.remove(); + break; + } + lastUniquePhone = fidsData.getPhone(); + break; + } + if (fidsData != null && normalizedPhone.equals(lastUniquePhone)) { + phoneFidMap.put(fidsData.getFid(), phoneFid); + } + } + return phoneFidMap; + } + @Getter @Setter @AllArgsConstructor