diff --git a/src/main/java/ru/nbch/credit_tracker/mapper/indic/FlagsMapper.java b/src/main/java/ru/nbch/credit_tracker/mapper/indic/FlagsMapper.java index c64cd90..ecbce5f 100644 --- a/src/main/java/ru/nbch/credit_tracker/mapper/indic/FlagsMapper.java +++ b/src/main/java/ru/nbch/credit_tracker/mapper/indic/FlagsMapper.java @@ -16,4 +16,21 @@ public interface FlagsMapper { List findFlag90ByRuPaymt(@Param("fids") List fids, @Param("reportedDate") LocalDate reportedDate); + List findFlagsDebt5000Old(@Param("fids") List fids); + + List findFlag90ByPastDueArrearOld(@Param("fids") List fids, @Param("reportedDate") LocalDate reportedDate); + + List findFlag90ByRuPaymtOld(@Param("fids") List fids, @Param("reportedDate") LocalDate reportedDate); + + List findFlagsDebt5000New(@Param("fids") List fids); + + List findFlagsDebt5000NewWithOrderBy(@Param("fids") List fids); + + List findFlag90ByPastDueArrearNew(@Param("fids") List fids, @Param("reportedDate") LocalDate reportedDate); + + List findFlag90ByPastDueArrearNewWithOrderBy(@Param("fids") List fids); + + List findFlag90ByRuPaymtNew(@Param("fids") List fids, @Param("reportedDate") LocalDate reportedDate); + + List findFlag90ByRuPaymtNewWithOrderBy(@Param("fids") List fids); } diff --git a/src/main/java/ru/nbch/credit_tracker/service/indic/FlagsService.java b/src/main/java/ru/nbch/credit_tracker/service/indic/FlagsService.java index 5a11f68..17a6924 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/indic/FlagsService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/indic/FlagsService.java @@ -1,9 +1,5 @@ package ru.nbch.credit_tracker.service.indic; -import java.time.LocalDate; -import java.util.HashMap; -import java.util.List; -import java.util.Map; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; @@ -12,6 +8,13 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import ru.nbch.credit_tracker.mapper.indic.FlagsMapper; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.time.LocalDate; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + @Service public class FlagsService { @@ -29,8 +32,11 @@ public class FlagsService { List distinctFids = fids.stream().distinct().toList(); log.debug("Fids count: {}", distinctFids.size()); Map flags5000 = calcFlag5000(distinctFids); + calcFlag500Test(distinctFids); Map flags90DaysByPastDueArrear = calcFlag90DaysByPastDueArrear(distinctFids); + calcFlag90DaysByPastDueArrearTest(distinctFids); Map flags90DaysByRuPaymt = calcFlag90DaysByRuPaymt(distinctFids); + calcFlag90DaysByRuPaymtTest(distinctFids); Map result = new HashMap<>(); fids.forEach(fid -> { @@ -65,6 +71,18 @@ public class FlagsService { return res; } + private void calcFlag500Test(List fids) { + log.debug("Start findFlagsDebt5000Old"); + mapper.findFlagsDebt5000Old(fids); + log.debug("Complete findFlagsDebt5000Old"); + log.debug("Start findFlagsDebt5000New"); + mapper.findFlagsDebt5000New(fids); + log.debug("Complete findFlagsDebt5000New"); + log.debug("Start findFlagsDebt5000NewWithOrderBy"); + mapper.findFlagsDebt5000NewWithOrderBy(fids); + log.debug("Complete findFlagsDebt5000NewWithOrderBy"); + } + /** * Флаг = 1, если выполняется хотя бы одно из условий: * В INDIC.RU_PASTDUEARREAR или RU_PAYMT у данного FID есть запись с DAYS_PAST_DUE ≥ 90 и REPORTED_DT >= текущая дата – 12 месяцев. @@ -79,6 +97,19 @@ public class FlagsService { return res; } + private void calcFlag90DaysByPastDueArrearTest(List fids) { + LocalDate yearAgo = LocalDate.now().minusYears(1); + log.debug("Start findFlag90ByPastDueArrearOld"); + mapper.findFlag90ByPastDueArrearOld(fids, yearAgo); + log.debug("Complete findFlag90ByPastDueArrearOld"); + log.debug("Start findFlag90ByPastDueArrearNew"); + mapper.findFlag90ByPastDueArrearNew(fids, yearAgo); + log.debug("Complete findFlag90ByPastDueArrearNew"); + log.debug("Start findFlag90ByPastDueArrearNewWithOrderBy"); + mapper.findFlag90ByPastDueArrearNewWithOrderBy(fids); + log.debug("Complete findFlag90ByPastDueArrearNewWithOrderBy"); + } + private Map calcFlag90DaysByRuPaymt(List fids) { log.debug("Start calculating flag 90 by ruPaymt"); LocalDate yearAgo = LocalDate.now().minusYears(1); @@ -88,6 +119,19 @@ public class FlagsService { return res; } + private void calcFlag90DaysByRuPaymtTest(List fids) { + LocalDate yearAgo = LocalDate.now().minusYears(1); + log.debug("Start findFlag90ByRuPaymtOld"); + mapper.findFlag90ByRuPaymtOld(fids,yearAgo); + log.debug("Complete findFlag90ByRuPaymtOld"); + log.debug("Start findFlag90ByRuPaymtNew"); + mapper.findFlag90ByRuPaymtNew(fids, yearAgo); + log.debug("Complete findFlag90ByRuPaymtNew"); + log.debug("Start findFlag90ByRuPaymtNewWithOrderBy"); + mapper.findFlag90ByRuPaymtNewWithOrderBy(fids); + log.debug("Complete findFlag90ByRuPaymtNewWithOrderBy"); + } + private Map makeFidFlagMapByRs(List fids, List rows) { Map result = new HashMap<>(); for (Integer fid : fids) { @@ -98,6 +142,7 @@ public class FlagsService { } return result; } + @Getter @Setter @AllArgsConstructor @@ -112,4 +157,21 @@ public class FlagsService { private Integer fid; private Integer flag; } + + @Getter + @Setter + public static class Debt5000Data { + private Integer fid; + private BigInteger accSerialNum; + private LocalDate reportedDate; + private BigDecimal amtPastDue; + } + + @Getter + @Setter + public static class Flag90DaysData { + private Integer fid; + private BigInteger daysPastDue; + private LocalDate reportedDate; + } } diff --git a/src/main/resources/mybatis/mapper/indic/FlagsMapper.xml b/src/main/resources/mybatis/mapper/indic/FlagsMapper.xml index 751fc7c..410ab04 100644 --- a/src/main/resources/mybatis/mapper/indic/FlagsMapper.xml +++ b/src/main/resources/mybatis/mapper/indic/FlagsMapper.xml @@ -78,4 +78,151 @@ GROUP BY fid WITH UR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file