This commit is contained in:
parent
8233617d66
commit
03328d6ffd
4 changed files with 58 additions and 17 deletions
|
|
@ -14,4 +14,6 @@ public interface IndicFlagsMapper {
|
||||||
|
|
||||||
List<PaymentsFlag> findFlag90ByRuPaymt(@Param("fids") List<Integer> fids, @Param("reportedDate") LocalDate reportedDate);
|
List<PaymentsFlag> findFlag90ByRuPaymt(@Param("fids") List<Integer> fids, @Param("reportedDate") LocalDate reportedDate);
|
||||||
|
|
||||||
|
List<PaymentsFlag> findFlag90ByRuAllArrears(@Param("fids") List<Integer> fids, @Param("reportedDate") LocalDate reportedDate);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
package ru.nbch.credit_tracker.service.indic;
|
package ru.nbch.credit_tracker.service.indic;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.nbch.credit_tracker.entities.indic.PaymentsFlag;
|
import ru.nbch.credit_tracker.entities.indic.PaymentsFlag;
|
||||||
|
|
@ -41,4 +41,8 @@ public class FlagsService2 {
|
||||||
.collect(Collectors.toMap(PaymentsFlag::getFid, PaymentsFlag::getFlag));
|
.collect(Collectors.toMap(PaymentsFlag::getFid, PaymentsFlag::getFlag));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<Integer, Integer> findFlag90ByRuAllArrears(List<Integer> fids, LocalDate date) {
|
||||||
|
return flagsMapper.findFlag90ByRuAllArrears(fids, date).stream()
|
||||||
|
.collect(Collectors.toMap(PaymentsFlag::getFid, PaymentsFlag::getFlag));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@ public class FlagsEnricher {
|
||||||
Map<Integer, Integer> flagsDebt5000 = flagsService.findFlagsDebt5000(noFlagDataFids);
|
Map<Integer, Integer> flagsDebt5000 = flagsService.findFlagsDebt5000(noFlagDataFids);
|
||||||
Map<Integer, Integer> flag90ByPastDueArrear = flagsService.findFlag90ByPastDueArrear(noFlagDataFids, yearAgo);
|
Map<Integer, Integer> flag90ByPastDueArrear = flagsService.findFlag90ByPastDueArrear(noFlagDataFids, yearAgo);
|
||||||
Map<Integer, Integer> flag90ByRuPaymt = flagsService.findFlag90ByRuPaymt(noFlagDataFids, yearAgo);
|
Map<Integer, Integer> flag90ByRuPaymt = flagsService.findFlag90ByRuPaymt(noFlagDataFids, yearAgo);
|
||||||
|
Map<Integer, Integer> flag90ByRuAllArrear = flagsService.findFlag90ByRuAllArrears(noFlagDataFids, yearAgo);
|
||||||
|
|
||||||
List<FlagData> flagCacheOnUpdate = phonesMaps.stream()
|
List<FlagData> flagCacheOnUpdate = phonesMaps.stream()
|
||||||
.flatMap(phonesMap -> {
|
.flatMap(phonesMap -> {
|
||||||
|
|
@ -61,8 +62,8 @@ public class FlagsEnricher {
|
||||||
Integer debt5000 = flagsDebt5000.getOrDefault(fid, 0);
|
Integer debt5000 = flagsDebt5000.getOrDefault(fid, 0);
|
||||||
int pastDue90 = flag90ByPastDueArrear.getOrDefault(fid, 0);
|
int pastDue90 = flag90ByPastDueArrear.getOrDefault(fid, 0);
|
||||||
int paymt90 = flag90ByRuPaymt.getOrDefault(fid, 0);
|
int paymt90 = flag90ByRuPaymt.getOrDefault(fid, 0);
|
||||||
Integer flagDays90 = Math.max(pastDue90, paymt90);
|
int allArrears90 = flag90ByRuAllArrear.getOrDefault(fid, 0);
|
||||||
|
Integer flagDays90 = Math.max(allArrears90, Math.max(pastDue90, paymt90));
|
||||||
FlagData flagData = FlagData.builder()
|
FlagData flagData = FlagData.builder()
|
||||||
.flag_90_12(flagDays90)
|
.flag_90_12(flagDays90)
|
||||||
.flag_debt5000(debt5000)
|
.flag_debt5000(debt5000)
|
||||||
|
|
|
||||||
|
|
@ -46,21 +46,42 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="findFlagsDebt5000" resultMap="PaymentsFlagResult">
|
<select id="findFlagsDebt5000" resultMap="PaymentsFlagResult">
|
||||||
SELECT
|
SELECT FID as fid,
|
||||||
FID as fid,
|
(case
|
||||||
(case when (sum(case when AMT_PAST_DUE > 5000 then 1 else 0 end) = 0) then 0 else 1 end) as flag
|
when (sum(case when DEBT_AMT > 5000 then 1 else 0 end) = 0) then 0
|
||||||
FROM
|
else 1 end) as flag
|
||||||
(select FID, AMT_PAST_DUE, rank() over (partition by FID, ACC_SERIAL_NUM order by REPORTED_DT desc) rn
|
FROM (
|
||||||
FROM RU_PASTDUEARREAR
|
select FID, DEBT_AMT, rank() over (partition by FID, ACC_SERIAL_NUM order by REPORTED_DT desc) rn
|
||||||
WHERE FID IN
|
from (SELECT FID,
|
||||||
|
ACC_SERIAL_NUM,
|
||||||
|
REPORTED_DT,
|
||||||
|
AMT_PAST_DUE AS DEBT_AMT
|
||||||
|
FROM INDIC.RU_PASTDUEARREAR
|
||||||
|
WHERE REPORTED_DT >= (CURRENT DATE - 12 MONTHS)
|
||||||
|
AND AMT_PAST_DUE IS NOT NULL
|
||||||
|
AND FID in
|
||||||
<foreach item="fid" collection="fids" open="(" separator="," close=")">
|
<foreach item="fid" collection="fids" open="(" separator="," close=")">
|
||||||
#{fid}
|
#{fid}
|
||||||
</foreach>
|
</foreach>
|
||||||
AND REPORTED_DT >= (CURRENT DATE - 12 MONTHS)
|
|
||||||
)
|
UNION ALL
|
||||||
|
|
||||||
|
SELECT FID,
|
||||||
|
ACC_SERIAL_NUM,
|
||||||
|
REPORTED_DT,
|
||||||
|
PDA_AMT_PASTDUE AS DEBT_AMT
|
||||||
|
FROM INDIC.RU_ALL_ARREARS
|
||||||
|
WHERE REPORTED_DT >= (CURRENT DATE - 12 MONTHS)
|
||||||
|
AND PDA_AMT_PASTDUE IS NOT NULL
|
||||||
|
AND FID IN
|
||||||
|
<foreach item="fid" collection="fids" open="(" separator="," close=")">
|
||||||
|
#{fid}
|
||||||
|
</foreach>
|
||||||
|
) as united_data
|
||||||
|
) as acc_debt
|
||||||
where rn = 1
|
where rn = 1
|
||||||
group by FID
|
group by FID
|
||||||
WITH UR
|
with ur
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="findFlag90ByPastDueArrear" resultMap="PaymentsFlagResult">
|
<select id="findFlag90ByPastDueArrear" resultMap="PaymentsFlagResult">
|
||||||
|
|
@ -76,6 +97,19 @@
|
||||||
WITH UR
|
WITH UR
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="findFlag90ByRuAllArrears" resultMap="PaymentsFlagResult">
|
||||||
|
SELECT
|
||||||
|
FID as fid,
|
||||||
|
(case when (sum(case when (REPORTED_DT >= #{reportedDate} and PDA_DAYS_PAST_DUE >= 90) then 1 else 0 end) = 0) then 0 else 1 end) as flag
|
||||||
|
FROM RU_ALL_ARREARS
|
||||||
|
WHERE FID IN
|
||||||
|
<foreach item="fid" collection="fids" open="(" separator="," close=")">
|
||||||
|
#{fid}
|
||||||
|
</foreach>
|
||||||
|
GROUP BY FID
|
||||||
|
WITH UR
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="findFlag90ByRuPaymt" resultMap="PaymentsFlagResult">
|
<select id="findFlag90ByRuPaymt" resultMap="PaymentsFlagResult">
|
||||||
SELECT
|
SELECT
|
||||||
FID as fid,
|
FID as fid,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue