Get rid of old PersonService and FlagsService

This commit is contained in:
Mikhail Trofimov 2026-04-23 14:40:37 +03:00
parent a3dafedb27
commit 6ded5b3a49
5 changed files with 6 additions and 349 deletions

View file

@ -1,43 +0,0 @@
package ru.nbch.credit_tracker.service.indic;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.stereotype.Service;
@Service
public class FlagsService {
@Getter
@Setter
@AllArgsConstructor
public static class FlagsData {
private Integer flagDebt5000;
private Integer flag90days;
}
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public static class RuPastDuarearData {
private Integer fid;
private BigInteger accSerialNum;
private LocalDate reportedDate;
private BigDecimal amtPastDue;
private BigInteger daysPastDue;
}
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public static class RuPaymtData {
private Integer fid;
private BigInteger daysPastDue;
private LocalDate reportedDate;
}
}

View file

@ -1,50 +0,0 @@
package ru.nbch.credit_tracker.service.indic;
import java.time.LocalDate;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.mapper.indic.PersonMapper;
@Slf4j
@Service
public class PersonService {
private final PersonMapper mapper;
public PersonService(PersonMapper mapper) {
this.mapper = mapper;
}
@Getter
@AllArgsConstructor
public static class PersonData {
private NameData name;
private PassportData passport;
}
@Getter
@Setter
public static class NameData {
private Integer fid;
private String firstName;
private String lastName;
private String middleName;
private LocalDate birthDate;
private LocalDate fileSinceDate;
}
@Getter
@Setter
public static class PassportData {
private Integer fid;
private String serNum;
private String idNum;
private LocalDate issDate;
private String idType;
private String idType2;
private LocalDate fileSinceDate;
}
}

View file

@ -5,46 +5,11 @@
<mapper namespace="ru.nbch.credit_tracker.mapper.indic.IndicFlagsMapper">
<resultMap id="RuPastDuarearResultMap" type="ru.nbch.credit_tracker.service.indic.FlagsService$RuPastDuarearData">
<result property="fid" column="fid" />
<result property="accSerialNum" column="ACC_SERIAL_NUM" />
<result property="reportedDate" column="REPORTED_DT" />
<result property="amtPastDue" column="AMT_PAST_DUE" />
<result property="daysPastDue" column="DAYS_PAST_DUE" />
</resultMap>
<resultMap id="RuPaymtResultMap" type="ru.nbch.credit_tracker.service.indic.FlagsService$RuPaymtData">
<result property="fid" column="fid" />
<result property="daysPastDue" column="DAYS_PAST_DUE" />
<result property="reportedDate" column="REPORTED_DT" />
</resultMap>
<resultMap id="PaymentsFlagResult" type="ru.nbch.credit_tracker.entities.indic.PaymentsFlag">
<result property="fid" column="fid" />
<result property="flag" column="flag" />
</resultMap>
<select id="findRuPastDuarearData" resultMap="RuPastDuarearResultMap">
SELECT FID, ACC_SERIAL_NUM, REPORTED_DT, AMT_PAST_DUE, DAYS_PAST_DUE
FROM RU_PASTDUEARREAR
WHERE FID IN
<foreach item="fid" collection="fids" open="(" separator="," close=")">
#{fid}
</foreach>
with UR
</select>
<select id="findRuPaymtData" resultMap="RuPaymtResultMap">
SELECT FID, DAYS_PAST_DUE, REPORTED_DT
FROM RU_PAYMT
WHERE FID IN
<foreach item="fid" collection="fids" open="(" separator="," close=")">
#{fid}
</foreach>
AND REPORTED_DT >= #{reportedDate}
with UR
</select>
<select id="findFlagsDebt5000" resultMap="PaymentsFlagResult">
SELECT FID as fid,
(case

View file

@ -1,16 +1,16 @@
package ru.nbch.credit_tracker.service;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import javax.sql.DataSource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import javax.sql.DataSource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import ru.nbch.credit_tracker.service.indic.FlagsService;
public class FlagsService2Test {
@ -123,7 +123,6 @@ public class FlagsService2Test {
private DataSource dataSource;
private NamedParameterJdbcTemplate jdbcTemplate;
private FlagsService flagsService;
@BeforeEach
void setUp() {

View file

@ -1,214 +0,0 @@
package ru.nbch.credit_tracker.service;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import ru.nbch.credit_tracker.mapper.indic.IndicFlagsMapper;
import ru.nbch.credit_tracker.service.indic.FlagsService;
@ExtendWith(MockitoExtension.class)
public class FlagsServiceTest {
private static final LocalDate INITIAL_DATE = LocalDate.parse("2025-09-25");
@Mock
IndicFlagsMapper flagsMapper;
@Test
public void testfindFlags() {
// FlagsService flagsService = new FlagsService(flagsMapper, null);
// when(flagsMapper.findRuPastDuarearData(Mockito.anyList())).thenReturn(ruPastDuarearDataList);
// when(flagsMapper.findRuPaymtData(Mockito.anyList(), Mockito.any())).thenReturn(ruPaymtDataList);
List<Integer> fids = new ArrayList<>(List.of(
1, // есть просрочка 5000, есть просрочка 90_days в RU_PASTDUEARREAR
2, // есть просрочка 5000, нет просрочки 90_days в RU_PASTDUEARREAR. Нет просрочки 90_days в RU_PAYMT
3, // есть просрочка 5000, нет просрочки 90_days в RU_PASTDUEARREAR. Есть просрочка 90_days в RU_PAYMT
4, // нет никаких просрочек
7, // нет просрочки 5000, есть просрочка 90_days в RU_PASTDUEARREAR
5, // есть просрочка 5000, есть просрочка 90_days в RU_PASTDUEARREAR
6, // нет просрочки 5000, нет просрочки 90_days в RU_PASTDUEARREAR. Есть просрочка 90_days в RU_PAYMT
8, // нету в RU_PASTDUEARREAR, есть в RU_PAYMT
9) // нету в RU_PASTDUEARREAR, нету в RU_PAYMT
);
// Map<Integer, FlagsService.FlagsData> resultMap = flagsService.findFlags(fids);
//
// Assertions.assertEquals(9, resultMap.size());
// Assertions.assertEquals(1, resultMap.get(1).getFlagDebt5000());
// Assertions.assertEquals(1, resultMap.get(2).getFlagDebt5000());
// Assertions.assertEquals(1, resultMap.get(3).getFlagDebt5000());
// Assertions.assertEquals(0, resultMap.get(4).getFlagDebt5000());
// Assertions.assertEquals(1, resultMap.get(5).getFlagDebt5000());
// Assertions.assertEquals(0, resultMap.get(6).getFlagDebt5000());
// Assertions.assertEquals(0, resultMap.get(7).getFlagDebt5000());
// Assertions.assertEquals(0, resultMap.get(8).getFlagDebt5000());
// Assertions.assertEquals(0, resultMap.get(9).getFlagDebt5000());
//
// Assertions.assertEquals(1, resultMap.get(1).getFlag90days());
// Assertions.assertEquals(0, resultMap.get(2).getFlag90days());
// Assertions.assertEquals(1, resultMap.get(3).getFlag90days());
// Assertions.assertEquals(0, resultMap.get(4).getFlag90days());
// Assertions.assertEquals(1, resultMap.get(5).getFlag90days());
// Assertions.assertEquals(1, resultMap.get(6).getFlag90days());
// Assertions.assertEquals(1, resultMap.get(7).getFlag90days());
// Assertions.assertEquals(1, resultMap.get(8).getFlag90days());
// Assertions.assertEquals(1, resultMap.get(9).getFlag90days());
}
@Test
public void testfindFlagsWithoutRuPaymt() {
// FlagsService2 flagsService = new FlagsService2(flagsMapper, null, new ObjectMapper());
// when(flagsMapper.findRuPastDuarearData(Mockito.anyList())).thenReturn(ruPastDuarearDataList);
// when(flagsMapper.findRuPaymtData(Mockito.anyList(), Mockito.any())).thenReturn(new ArrayList<>());
List<Integer> fids = new ArrayList<>(List.of(
1, // есть просрочка 5000, есть просрочка 90_days в RU_PASTDUEARREAR
2, // есть просрочка 5000, нет просрочки 90_days в RU_PASTDUEARREAR. Нет просрочки 90_days в RU_PAYMT
3, // есть просрочка 5000, нет просрочки 90_days в RU_PASTDUEARREAR. Есть просрочка 90_days в RU_PAYMT
4, // нет никаких просрочек
7, // нет просрочки 5000, есть просрочка 90_days в RU_PASTDUEARREAR
5, // есть просрочка 5000, есть просрочка 90_days в RU_PASTDUEARREAR
6, // нет просрочки 5000, нет просрочки 90_days в RU_PASTDUEARREAR. Есть просрочка 90_days в RU_PAYMT
8, // нету в RU_PASTDUEARREAR, есть в RU_PAYMT
9) // нету в RU_PASTDUEARREAR, нету в RU_PAYMT
);
// Map<Integer, Integer> resultMap = flagsService.findFlagsDebt5000(fids);
//
// Assertions.assertEquals(9, resultMap.size());
// Assertions.assertEquals(1, resultMap.get(1));
// Assertions.assertEquals(1, resultMap.get(2));
// Assertions.assertEquals(1, resultMap.get(3));
// Assertions.assertEquals(0, resultMap.get(4));
// Assertions.assertEquals(1, resultMap.get(5));
// Assertions.assertEquals(0, resultMap.get(6));
// Assertions.assertEquals(0, resultMap.get(7));
// Assertions.assertEquals(0, resultMap.get(8));
// Assertions.assertEquals(0, resultMap.get(9));
//
// resultMap = flagsService.findFlag90ByPastDueArrear(fids, LocalDate.now().minusYears(1));
// Assertions.assertEquals(1, resultMap.get(1));
// Assertions.assertEquals(0, resultMap.get(2));
// Assertions.assertEquals(0, resultMap.get(3));
// Assertions.assertEquals(0, resultMap.get(4));
// Assertions.assertEquals(1, resultMap.get(5));
// Assertions.assertEquals(0, resultMap.get(6));
// Assertions.assertEquals(1, resultMap.get(7));
// Assertions.assertEquals(0, resultMap.get(8));
// Assertions.assertEquals(0, resultMap.get(9));
}
@Test
public void testfindFlagsWithoutRuPastduearreae() {
// FlagsService2 flagsService = new FlagsService2(flagsMapper, null, new ObjectMapper());
// when(flagsMapper.findRuPastDuarearData(Mockito.anyList())).thenReturn(new ArrayList<>());
// when(flagsMapper.findRuPaymtData(Mockito.anyList(), Mockito.any())).thenReturn(ruPaymtDataList);
List<Integer> fids = new ArrayList<>(List.of(
1, // есть просрочка 5000, есть просрочка 90_days в RU_PASTDUEARREAR
2, // есть просрочка 5000, нет просрочки 90_days в RU_PASTDUEARREAR. Нет просрочки 90_days в RU_PAYMT
3, // есть просрочка 5000, нет просрочки 90_days в RU_PASTDUEARREAR. Есть просрочка 90_days в RU_PAYMT
4, // нет никаких просрочек
7, // нет просрочки 5000, есть просрочка 90_days в RU_PASTDUEARREAR
5, // есть просрочка 5000, есть просрочка 90_days в RU_PASTDUEARREAR
6, // нет просрочки 5000, нет просрочки 90_days в RU_PASTDUEARREAR. Есть просрочка 90_days в RU_PAYMT
8, // нету в RU_PASTDUEARREAR, есть в RU_PAYMT
9) // нету в RU_PASTDUEARREAR, нету в RU_PAYMT
);
// Map<Integer, Integer> resultMap = flagsService.findFlagsDebt5000(fids);
//
// Assertions.assertEquals(9, resultMap.size());
// Assertions.assertEquals(0, resultMap.get(1));
// Assertions.assertEquals(0, resultMap.get(2));
// Assertions.assertEquals(0, resultMap.get(3));
// Assertions.assertEquals(0, resultMap.get(4));
// Assertions.assertEquals(0, resultMap.get(5));
// Assertions.assertEquals(0, resultMap.get(6));
// Assertions.assertEquals(0, resultMap.get(7));
// Assertions.assertEquals(0, resultMap.get(8));
// Assertions.assertEquals(0, resultMap.get(9));
//
// resultMap = flagsService.findFlag90ByRuPaymt(fids,LocalDate.now().minusYears(1) );
// Assertions.assertEquals(0, resultMap.get(1));
// Assertions.assertEquals(0, resultMap.get(2));
// Assertions.assertEquals(1, resultMap.get(3));
// Assertions.assertEquals(0, resultMap.get(4));
// Assertions.assertEquals(0, resultMap.get(5));
// Assertions.assertEquals(1, resultMap.get(6));
// Assertions.assertEquals(0, resultMap.get(7));
// Assertions.assertEquals(1, resultMap.get(8));
// Assertions.assertEquals(1, resultMap.get(9));
}
private final List<FlagsService.RuPastDuarearData> ruPastDuarearDataList = new ArrayList<>(
List.of(
new FlagsService.RuPastDuarearData(1, BigInteger.valueOf(1), calcLocalDateFromInitialDate("2025-05-31"), BigDecimal.valueOf(36000.00), BigInteger.valueOf(159)), // просрочка 5000 и 90_days по этой записи
new FlagsService.RuPastDuarearData(2, BigInteger.valueOf(2), calcLocalDateFromInitialDate("2021-12-29"), BigDecimal.valueOf(3200.00), null), // не макс reported_date для того же acc_serial_num
new FlagsService.RuPastDuarearData(2, BigInteger.valueOf(2), calcLocalDateFromInitialDate("2022-01-28"), BigDecimal.valueOf(6700.00), null), // не макс reported_date для того же acc_serial_num
new FlagsService.RuPastDuarearData(2, BigInteger.valueOf(2), calcLocalDateFromInitialDate("2025-04-06"), BigDecimal.valueOf(5700.00), null), // просрочка 5000 по этой записи
new FlagsService.RuPastDuarearData(3, BigInteger.valueOf(3), calcLocalDateFromInitialDate("2025-01-14"), BigDecimal.valueOf(300000000000.00), null),
new FlagsService.RuPastDuarearData(2, BigInteger.valueOf(2), calcLocalDateFromInitialDate("2021-11-29"), BigDecimal.valueOf(0.00), null), // не макс reported_date для того же acc_serial_num
new FlagsService.RuPastDuarearData(4, BigInteger.valueOf(4), calcLocalDateFromInitialDate("2025-12-06"), BigDecimal.valueOf(4000.00), null), // нет просрочек
new FlagsService.RuPastDuarearData(5, BigInteger.valueOf(5), calcLocalDateFromInitialDate("2021-04-01"), BigDecimal.valueOf(2000.31), BigInteger.valueOf(182)), // не макс reported_date для того же acc_serial_num
new FlagsService.RuPastDuarearData(5, BigInteger.valueOf(5), calcLocalDateFromInitialDate("2021-05-01"), BigDecimal.valueOf(2000.31), BigInteger.valueOf(212)), // не макс reported_date для того же acc_serial_num
new FlagsService.RuPastDuarearData(5, BigInteger.valueOf(5), calcLocalDateFromInitialDate("2021-05-31"), BigDecimal.valueOf(2000.31), null), // не макс reported_date для того же acc_serial_num
new FlagsService.RuPastDuarearData(5, BigInteger.valueOf(5), calcLocalDateFromInitialDate("2021-07-01"), BigDecimal.valueOf(2000.31), BigInteger.valueOf(273)), // не макс reported_date для того же acc_serial_num
new FlagsService.RuPastDuarearData(5, BigInteger.valueOf(5), calcLocalDateFromInitialDate("2021-07-31"), BigDecimal.valueOf(2000.31), null), // не макс reported_date для того же acc_serial_num
new FlagsService.RuPastDuarearData(5, BigInteger.valueOf(5), calcLocalDateFromInitialDate("2021-08-04"), BigDecimal.valueOf(7000.31), BigInteger.valueOf(307)), // не макс reported_date для того же acc_serial_num
new FlagsService.RuPastDuarearData(5, BigInteger.valueOf(5), calcLocalDateFromInitialDate("2025-09-08"), BigDecimal.valueOf(2000.31), BigInteger.valueOf(338)), // не макс reported_date для того же acc_serial_num, просрочка 90_days будет взята у этой записи
new FlagsService.RuPastDuarearData(5, BigInteger.valueOf(51), calcLocalDateFromInitialDate("2025-09-09"), BigDecimal.valueOf(7000.31), BigInteger.valueOf(368)), // Просрочка 5000 будет взята у этой записи. Уникальный acc_serial_num с макс reported_dt
new FlagsService.RuPastDuarearData(5, BigInteger.valueOf(5), calcLocalDateFromInitialDate("2021-11-04"), BigDecimal.valueOf(2000.31), BigInteger.valueOf(399)), // не макс reported_date для того же acc_serial_num
new FlagsService.RuPastDuarearData(5, BigInteger.valueOf(5), calcLocalDateFromInitialDate("2022-01-04"), BigDecimal.valueOf(5000.31), BigInteger.valueOf(5)), // не макс reported_date для того же acc_serial_num
new FlagsService.RuPastDuarearData(6, BigInteger.valueOf(6), calcLocalDateFromInitialDate("2025-09-09"), BigDecimal.valueOf(3000), null), // Нет просрочки 5000, нет просрочки 90_days (90_days будет в RU_PAYMT)
new FlagsService.RuPastDuarearData(7, BigInteger.valueOf(7), calcLocalDateFromInitialDate("2025-09-09"), BigDecimal.valueOf(5500), BigInteger.valueOf(90)), // не макс reported_date для того же acc_serial_num. 90_days будет взята отсюда
new FlagsService.RuPastDuarearData(7, BigInteger.valueOf(7), calcLocalDateFromInitialDate("2025-09-10"), BigDecimal.valueOf(3000), null) // Нет просрочки 5000. Уникальный acc_serial_num с макс reported_dt
)
);
private final List<FlagsService.RuPaymtData> ruPaymtDataList = new ArrayList<>(
List.of(
new FlagsService.RuPaymtData(1, null, calcLocalDateFromInitialDate("2024-11-09")),
new FlagsService.RuPaymtData(2, BigInteger.valueOf(30), calcLocalDateFromInitialDate("2024-11-09")),
new FlagsService.RuPaymtData(3, null, calcLocalDateFromInitialDate("2024-11-10")),
new FlagsService.RuPaymtData(3, BigInteger.valueOf(100), calcLocalDateFromInitialDate("2024-11-15")),
new FlagsService.RuPaymtData(4, BigInteger.valueOf(10), calcLocalDateFromInitialDate("2024-11-15")),
new FlagsService.RuPaymtData(5, BigInteger.valueOf(10), calcLocalDateFromInitialDate("2023-11-15")),
new FlagsService.RuPaymtData(6, BigInteger.valueOf(90), calcLocalDateFromInitialDate("2024-11-09")),
new FlagsService.RuPaymtData(6, BigInteger.valueOf(80), calcLocalDateFromInitialDate("2024-10-09")),
new FlagsService.RuPaymtData(7, null, calcLocalDateFromInitialDate("2024-10-09")),
new FlagsService.RuPaymtData(8, null, calcLocalDateFromInitialDate("2024-10-09")),
new FlagsService.RuPaymtData(8, BigInteger.valueOf(83), calcLocalDateFromInitialDate("2024-10-09")),
new FlagsService.RuPaymtData(8, BigInteger.valueOf(91), calcLocalDateFromInitialDate("2024-10-09")),
new FlagsService.RuPaymtData(9, BigInteger.valueOf(100), calcLocalDateFromInitialDate("2024-10-09"))
)
);
private LocalDate calcLocalDateFromInitialDate(String date) {
LocalDateTime now = LocalDateTime.now();
long daysPassed = ChronoUnit.DAYS.between(INITIAL_DATE, now);
return LocalDate.parse(date).plusDays(daysPassed);
}
}