From 4e6ab1a8629fff09c2c895a85e333a2f7eff7fca Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Tue, 11 Nov 2025 12:52:01 +0300 Subject: [PATCH] flag calc --- .../service/task/impl/FlagsEnricher.java | 75 +++++++------------ 1 file changed, 29 insertions(+), 46 deletions(-) diff --git a/src/main/java/ru/nbch/credit_tracker/service/task/impl/FlagsEnricher.java b/src/main/java/ru/nbch/credit_tracker/service/task/impl/FlagsEnricher.java index e0b6a4f..19e6bcf 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/task/impl/FlagsEnricher.java +++ b/src/main/java/ru/nbch/credit_tracker/service/task/impl/FlagsEnricher.java @@ -1,6 +1,7 @@ package ru.nbch.credit_tracker.service.task.impl; import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; @@ -20,7 +21,6 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.exception.ExceptionUtils; -import ru.nbch.credit_tracker.entities.app.PhoneFidMap; import ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper; import ru.nbch.credit_tracker.model.SubjectProfile; import ru.nbch.credit_tracker.model.impl.SubjectPayload; @@ -95,52 +95,35 @@ public class FlagsEnricher implements Runnable { Map flag90ByPastDueArrear = flagsService.findFlag90ByPastDueArrear(fids, yearAgo); Map flag90ByRuPaymt = flagsService.findFlag90ByRuPaymt(fids, yearAgo); - List phoneFidMaps = subjects.stream().map(subject -> { - Integer debt5000 = null; - Integer flagDays90 = null; - LocalDateTime calculatedAt = null; - - if (subject.getFid() != null) { - debt5000 = flagsDebt5000.getOrDefault(subject.getFid(), 0); - int pastDue90 = flag90ByPastDueArrear.getOrDefault(subject.getFid(), 0); - int paymt90 = flag90ByRuPaymt.getOrDefault(subject.getFid(), 0); - flagDays90 = Math.max(pastDue90, paymt90); - calculatedAt = LocalDateTime.now(); - } - - return PhoneFidMap.builder() - .phone(subject.getPhone()) - .subjectId(subject.getIdentifier()) - .packageId(subjectPayload.getPackageId()) - .fid(subject.getFid()) - .flagDebt5000(debt5000) - .flag90days(flagDays90) - .calculatedAt(calculatedAt) - .build(); - }).toList(); - - List nullObjs = phoneFidMaps.stream().filter(Objects::isNull).toList(); - log.debug("null objs: {}", nullObjs.size()); - if (!nullObjs.isEmpty()) { - int i = 0; - i++; - } - String json = null; + String json; try { - json = mapper.writeValueAsString( - phoneFidMaps.stream() - .filter(Objects::nonNull) - .map(p -> new HashMap() {{ - put("subject_id", p.getSubjectId()); - put("fid", p.getFid()); - put("phone", p.getPhone()); - put("package_id", p.getPackageId()); - put("flag_debt5000", p.getFlagDebt5000()); - put("flag_90_12", p.getFlag90days()); - put("calculated_at", p.getCalculatedAt()); - }} - ).toList()); - } catch (Exception e) { + json = mapper.writeValueAsString(subjects.stream().map(subject -> { + Integer debt5000 = null; + Integer flagDays90 = null; + LocalDateTime calculatedAt = null; + + if (subject.getFid() != null) { + debt5000 = flagsDebt5000.getOrDefault(subject.getFid(), 0); + int pastDue90 = flag90ByPastDueArrear.getOrDefault(subject.getFid(), 0); + int paymt90 = flag90ByRuPaymt.getOrDefault(subject.getFid(), 0); + flagDays90 = Math.max(pastDue90, paymt90); + calculatedAt = LocalDateTime.now(); + } + + Integer finalDebt500 = debt5000; + Integer finalFlagDays9 = flagDays90; + LocalDateTime finalCalculatedAt = calculatedAt; + return new HashMap() {{ + put("subject_id", subject.getIdentifier()); + put("fid", subject.getFid()); + put("phone", subject.getPhone()); + put("package_id", subjectPayload.getPackageId()); + put("flag_debt5000", finalDebt500); + put("flag_90_12", finalFlagDays9); + put("calculated_at", finalCalculatedAt); + }}; + }).toList()); + } catch (JsonProcessingException e) { throw new RuntimeException(e); } phoneFidMapMapper.registerJson(json);