From 1e7dc551c238f0ecbfa9de45d530c11850581886 Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Wed, 28 Jan 2026 12:22:43 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/BKI-3217 --- .../service/indic/PersonServiceV2.java | 6 +- .../service/PersonServiceTest.java | 93 +++++++++++++++++++ 2 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 src/test/java/ru/nbch/credit_tracker/service/PersonServiceTest.java diff --git a/src/main/java/ru/nbch/credit_tracker/service/indic/PersonServiceV2.java b/src/main/java/ru/nbch/credit_tracker/service/indic/PersonServiceV2.java index 1b53195..a2e3f24 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/indic/PersonServiceV2.java +++ b/src/main/java/ru/nbch/credit_tracker/service/indic/PersonServiceV2.java @@ -40,7 +40,10 @@ public class PersonServiceV2 { return new HashMap<>(); } List passports = mapper.findPassportData(fids); + return groupPassportsData(passports); + } + public Map groupPassportsData(List passports) { return passports.stream() .filter(this::isDUL) .filter(this::checkLength) @@ -56,7 +59,6 @@ public class PersonServiceV2 { ) )); } - /** * Поиск данных по таблицам PHONE_NORM и NAME по списку номеров телефонов * @@ -129,6 +131,6 @@ public class PersonServiceV2 { } private boolean checkLength(Id p) { - return !("21".equals(p.getIdType2()) && "21".equals(p.getIdType())) || CTUtil.normalizePassport(p).length() == 10; + return (!"21".equals(p.getIdType2()) && !"21".equals(p.getIdType())) || CTUtil.normalizePassport(p).length() == 10; } } diff --git a/src/test/java/ru/nbch/credit_tracker/service/PersonServiceTest.java b/src/test/java/ru/nbch/credit_tracker/service/PersonServiceTest.java new file mode 100644 index 0000000..43a13b7 --- /dev/null +++ b/src/test/java/ru/nbch/credit_tracker/service/PersonServiceTest.java @@ -0,0 +1,93 @@ +package ru.nbch.credit_tracker.service; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; +import ru.nbch.credit_tracker.entities.indic.Id; +import ru.nbch.credit_tracker.service.indic.PersonServiceV2; + +@ExtendWith(MockitoExtension.class) +public class PersonServiceTest { + + @Test + public void groupingPassportDataTest() { + PersonServiceV2 personServiceV2 = new PersonServiceV2(null); + + List ids = new ArrayList<>(); + { + Id id = Id.builder() + .fid(1) + .idType("21") + .idNum("111") + .serNum("111111") + .fileSinceDate(LocalDate.of(2026, 1, 15)) + .build(); + ids.add(id); + } + + { + Id id = Id.builder() + .fid(1) + .idType2("21") + .idNum("111") + .serNum("111111") + .fileSinceDate(LocalDate.of(2026, 1, 15)) + .build(); + ids.add(id); + } + Map grouped = personServiceV2.groupPassportsData(ids); + Assertions.assertTrue(grouped.isEmpty()); + + { + Id id = Id.builder() + .fid(1) + .idType2("21") + .idNum("1111") + .serNum("111111") + .fileSinceDate(LocalDate.of(2026, 1, 15)) + .build(); + ids.add(id); + } + + grouped = personServiceV2.groupPassportsData(ids); + Assertions.assertFalse(grouped.isEmpty()); + Assertions.assertNotNull(grouped.get(1)); + + { + Id id = Id.builder() + .fid(1) + .idType("10") + .idType2("100") + .idNum("2222") + .serNum("222222") + .fileSinceDate(LocalDate.of(2026, 1, 15)) + .build(); + ids.add(id); + } + + grouped = personServiceV2.groupPassportsData(ids); + Assertions.assertNotNull(grouped.get(1)); + Assertions.assertEquals("1111", grouped.get(1).getIdNum()); + + { + Id id = Id.builder() + .fid(2) + .idType("10") + .idType2("100") + .idNum("22222222") + .serNum("222222333333") + .fileSinceDate(LocalDate.of(2026, 1, 15)) + .build(); + ids.add(id); + } + + grouped = personServiceV2.groupPassportsData(ids); + Assertions.assertNotNull(grouped.get(2)); + Assertions.assertEquals("22222222", grouped.get(2).getIdNum()); + } +}