Refactored PhoneService and SignalService
This commit is contained in:
parent
997bcc6c4a
commit
aa106350b5
2 changed files with 23 additions and 42 deletions
|
|
@ -119,32 +119,32 @@ public class SignalService {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
log.info("Start calculating fids and flags for subjects batch. PackageId: {}", packageId);
|
log.info("Start calculating fids and flags for subjects batch. PackageId: {}", packageId);
|
||||||
List<PhoneService.FidsPhoneData> fidsPhoneDataList = phoneService.findFidsPhoneData(subjects);
|
Map<String, Integer> fidsMap = phoneService.findFidsPhoneData(subjects);
|
||||||
LocalDateTime calculatedAt = LocalDateTime.now();
|
LocalDateTime calculatedAt = LocalDateTime.now();
|
||||||
|
|
||||||
Map<Integer, FlagsService.FlagsData> flagsDataMap = flagsService.findFlags(fidsPhoneDataList.stream().map(PhoneService.FidsPhoneData::getFid).filter(Objects::nonNull).toList());
|
Map<Integer, FlagsService.FlagsData> flagsDataMap = flagsService.findFlags(fidsMap.values().stream().filter(Objects::nonNull).toList());
|
||||||
List<PhoneFidMap> subjectToUpdate = new ArrayList<>();
|
List<PhoneFidMap> subjectToUpdate = new ArrayList<>();
|
||||||
|
|
||||||
fidsPhoneDataList.forEach(data -> {
|
subjects.forEach(subject -> {
|
||||||
PhoneFidMap subject;
|
Integer fid = fidsMap.get("9" + subject.getPhone());
|
||||||
if (data.getFid() != null) {
|
if (fid != null) {
|
||||||
FlagsService.FlagsData flagsData = flagsDataMap.get(data.getFid());
|
FlagsService.FlagsData flagsData = flagsDataMap.get(fid);
|
||||||
subject = PhoneFidMap.builder()
|
subject = PhoneFidMap.builder()
|
||||||
.id(data.getId())
|
.id(subject.getId())
|
||||||
.packageId(packageId)
|
.packageId(packageId)
|
||||||
.subjectId(data.getSubjectId())
|
.subjectId(subject.getSubjectId())
|
||||||
.phone(data.getPhone())
|
.phone(subject.getPhone())
|
||||||
.fid(data.getFid())
|
.fid(fid)
|
||||||
.flagDebt5000(flagsData.getFlagDebt5000())
|
.flagDebt5000(flagsData.getFlagDebt5000())
|
||||||
.flag90days(flagsData.getFlag90days())
|
.flag90days(flagsData.getFlag90days())
|
||||||
.calculatedAt(calculatedAt)
|
.calculatedAt(calculatedAt)
|
||||||
.build();
|
.build();
|
||||||
} else {
|
} else {
|
||||||
subject = PhoneFidMap.builder()
|
subject = PhoneFidMap.builder()
|
||||||
.id(data.getId())
|
.id(subject.getId())
|
||||||
.packageId(packageId)
|
.packageId(packageId)
|
||||||
.subjectId(data.getSubjectId())
|
.subjectId(subject.getSubjectId())
|
||||||
.phone(data.getPhone())
|
.phone(subject.getPhone())
|
||||||
.calculatedAt(calculatedAt)
|
.calculatedAt(calculatedAt)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package ru.nbch.credit_tracker.service.indic;
|
package ru.nbch.credit_tracker.service.indic;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
@ -8,7 +7,10 @@ import ru.nbch.credit_tracker.entities.dto.PhoneFidMap;
|
||||||
import ru.nbch.credit_tracker.mapper.indic.PhoneMapper;
|
import ru.nbch.credit_tracker.mapper.indic.PhoneMapper;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.*;
|
import java.util.Comparator;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -20,24 +22,13 @@ public class PhoneService {
|
||||||
this.mapper = mapper;
|
this.mapper = mapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<FidsPhoneData> findFidsPhoneData(List<PhoneFidMap> subjects) {
|
/**
|
||||||
List<FidsPhoneData> fidsPhoneDataList = new ArrayList<>();
|
* Ищет фиды по номерам телефона
|
||||||
|
* @return Map: key - номер телефона; value - fid
|
||||||
|
*/
|
||||||
|
public Map<String, Integer> findFidsPhoneData(List<PhoneFidMap> subjects) {
|
||||||
List<String> phones = subjects.stream().map(subject -> "9" + subject.getPhone()).toList();
|
List<String> phones = subjects.stream().map(subject -> "9" + subject.getPhone()).toList();
|
||||||
List<FidsData> fidsData = mapper.findFids(phones);
|
return convertFidsDataToMap(mapper.findFids(phones));
|
||||||
Map<String, Integer> fidsMap = convertFidsDataToMap(fidsData);
|
|
||||||
|
|
||||||
subjects.forEach(subject -> {
|
|
||||||
String phone = "9" + subject.getPhone();
|
|
||||||
Integer fid = fidsMap.get(phone);
|
|
||||||
if (fid != null) {
|
|
||||||
fidsPhoneDataList.add(new FidsPhoneData(subject.getId(), fid, subject.getPhone(), subject.getSubjectId()));
|
|
||||||
} else {
|
|
||||||
fidsPhoneDataList.add(new FidsPhoneData(subject.getId(), null, subject.getPhone(), subject.getSubjectId()));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return fidsPhoneDataList;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, Integer> convertFidsDataToMap(List<FidsData> fidsData) {
|
private Map<String, Integer> convertFidsDataToMap(List<FidsData> fidsData) {
|
||||||
|
|
@ -57,16 +48,6 @@ public class PhoneService {
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Getter
|
|
||||||
@Setter
|
|
||||||
@AllArgsConstructor
|
|
||||||
public static class FidsPhoneData {
|
|
||||||
private Integer id;
|
|
||||||
private Integer fid;
|
|
||||||
private String phone;
|
|
||||||
private String subjectId;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public static class FidsData {
|
public static class FidsData {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue