fix merging fids and phones

This commit is contained in:
etreschenkov 2025-10-02 11:50:36 +03:00
parent ae7260d790
commit 769fabf79a

View file

@ -5,6 +5,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
@ -90,6 +91,34 @@ public class PhoneService2 {
return phoneFidMap; return phoneFidMap;
} }
private Map<Integer, PhoneFidMap> merger(List<PhoneFidMap> subjects, List<FidsData> phonesByFid) {
Map<Integer, PhoneFidMap> phoneFidMap = new HashMap<>();
Iterator<FidsData> 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 @Getter
@Setter @Setter
@AllArgsConstructor @AllArgsConstructor