flag calc
This commit is contained in:
parent
83a452fed6
commit
881c31becd
3 changed files with 62 additions and 31 deletions
|
|
@ -1,17 +1,18 @@
|
|||
package ru.nbch.credit_tracker.mapper.indic;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import ru.nbch.credit_tracker.service.indic.FlagsService;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import ru.nbch.credit_tracker.entities.indic.PaymentsFlag;
|
||||
|
||||
@Mapper
|
||||
public interface FlagsMapper {
|
||||
|
||||
List<FlagsService.RuPastDuarearData> findRuPastDuarearData(@Param("fids") List<Integer> fids);
|
||||
List<PaymentsFlag> findFlagsDebt5000(@Param("fids") List<Integer> fids);
|
||||
|
||||
List<FlagsService.RuPaymtData> findRuPaymtData(@Param("fids") List<Integer> fids, @Param("reportedDate") LocalDate reportedDate);
|
||||
List<PaymentsFlag> findFlag90ByPastDueArrear(@Param("fids") List<Integer> fids, @Param("reportedDate") LocalDate reportedDate);
|
||||
|
||||
List<PaymentsFlag> findFlag90ByRuPaymt(@Param("fids") List<Integer> fids, @Param("reportedDate") LocalDate reportedDate);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,31 +1,37 @@
|
|||
package ru.nbch.credit_tracker.service.indic;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
|
||||
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.nbch.credit_tracker.entities.app.PhoneFidMap;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import ru.nbch.credit_tracker.model.SubjectProfile;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.nbch.credit_tracker.entities.indic.PaymentsFlag;
|
||||
import ru.nbch.credit_tracker.mapper.indic.FlagsMapper;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class FlagsService2 {
|
||||
private final FlagsMapper flagsMapper;
|
||||
|
||||
public FlagsService2() {
|
||||
|
||||
public FlagsService2(FlagsMapper flagsMapper) {
|
||||
this.flagsMapper = flagsMapper;
|
||||
}
|
||||
|
||||
// TODO optimize
|
||||
public Map<Integer, Integer> findFlagsDebt5000(List<Integer> fids) {
|
||||
return flagsMapper.findFlagsDebt5000(fids).stream()
|
||||
.collect(Collectors.toMap(PaymentsFlag::getFid, PaymentsFlag::getFlag));
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> findFlag90ByPastDueArrear(List<Integer> fids, LocalDate date) {
|
||||
return flagsMapper.findFlag90ByPastDueArrear(fids, date).stream()
|
||||
.collect(Collectors.toMap(PaymentsFlag::getFid, PaymentsFlag::getFlag));
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> findFlag90ByRuPaymt(List<Integer> fids, LocalDate date) {
|
||||
return flagsMapper.findFlag90ByRuPaymt(fids, date).stream()
|
||||
.collect(Collectors.toMap(PaymentsFlag::getFid, PaymentsFlag::getFlag));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
package ru.nbch.credit_tracker.service.task.impl;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
|
@ -72,14 +75,35 @@ public class FlagsEnricher implements Runnable {
|
|||
public void process(SubjectPayload subjectPayload) {
|
||||
List<SubjectProfile> subjects = subjectPayload.getSubjects();
|
||||
log.debug("FlagsEnricher handle by packageId: {}, size: {}", subjectPayload.getPackageId(), subjects.size());
|
||||
// flagsService.fillFlagsData(subjects);
|
||||
|
||||
List<Integer> fids = subjects.stream()
|
||||
.map(SubjectProfile::getFid)
|
||||
.filter(Objects::nonNull)
|
||||
.toList();
|
||||
LocalDate yearAgo = LocalDate.now().minusYears(1);
|
||||
|
||||
Map<Integer, Integer> flagsDebt5000 = flagsService.findFlagsDebt5000(fids);
|
||||
Map<Integer, Integer> flag90ByPastDueArrear = flagsService.findFlag90ByPastDueArrear(fids, yearAgo);
|
||||
Map<Integer, Integer> flag90ByRuPaymt = flagsService.findFlag90ByRuPaymt(fids, yearAgo);
|
||||
|
||||
List<PhoneFidMap> phoneFidMaps = subjects.stream().map(subject -> {
|
||||
Integer debt500 = null;
|
||||
Integer pastDue90 = null;
|
||||
Integer paymt90 = null;
|
||||
|
||||
if (subject.getFid() != null) {
|
||||
debt500 = flagsDebt5000.getOrDefault(subject.getFid(), 0);
|
||||
pastDue90 = flag90ByPastDueArrear.getOrDefault(subject.getFid(), 0);
|
||||
paymt90 = flag90ByRuPaymt.getOrDefault(subject.getFid(), 0);
|
||||
}
|
||||
|
||||
return PhoneFidMap.builder()
|
||||
.phone(subject.getPhone())
|
||||
.subjectId(subject.getIdentifier())
|
||||
.packageId(subjectPayload.getPackageId())
|
||||
.fid(subject.getFid())
|
||||
.flagDebt5000(debt500)
|
||||
.flag90days(paymt90)
|
||||
.build();
|
||||
}).toList();
|
||||
phoneFidMapMapper.register(phoneFidMaps);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue