http://jira.mfd.msk:8088/browse/BKI-3241 [recalc person data]
This commit is contained in:
parent
e92111273f
commit
c135bf8481
16 changed files with 193 additions and 251 deletions
|
|
@ -5,6 +5,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import ru.nbch.credit_tracker.service.MonitoringService;
|
||||
import ru.nbch.credit_tracker.service.UpdateProcessingPackagesService;
|
||||
import ru.nbch.credit_tracker.service.UpdatingFlagsService;
|
||||
|
||||
@SpringBootApplication
|
||||
public class CreditTrackerApplication {
|
||||
|
|
@ -13,10 +14,10 @@ public class CreditTrackerApplication {
|
|||
ConfigurableApplicationContext ctx = SpringApplication.run(CreditTrackerApplication.class, args);
|
||||
UpdateProcessingPackagesService updateProcessingPackagesService = ctx.getBean(UpdateProcessingPackagesService.class);
|
||||
MonitoringService monitoringService = ctx.getBean(MonitoringService.class);
|
||||
// UpdatingFlagsService updatingFlagsService = ctx.getBean(UpdatingFlagsService.class);
|
||||
// updatingFlagsService.update();
|
||||
updateProcessingPackagesService.run();
|
||||
monitoringService.run();
|
||||
UpdatingFlagsService updatingFlagsService = ctx.getBean(UpdatingFlagsService.class);
|
||||
updatingFlagsService.update();
|
||||
// updateProcessingPackagesService.run();
|
||||
// monitoringService.run();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ public interface PackagesRecordsMapper {
|
|||
void setErrorJson(@Param("json") String json);
|
||||
List<Long> registerJson(@Param("json") String json);
|
||||
List<PackagesRecordsMap> findFullPhoneFidMap(@Param("packageId") Long packageId, @Param("limit") int limit, @Param("offset") int offset);
|
||||
List<Long> uniquePackageIdByPhones(@Param("json") String json);
|
||||
Long deleteByPackageId(@Param("packageId") Long id);
|
||||
|
||||
PackagesRecordsMap findById(Long id);
|
||||
|
|
|
|||
|
|
@ -11,7 +11,9 @@ public interface PhonesMapMapper {
|
|||
List<PhonesMap> searchedAtLessThan(@Param("daysCount") Integer daysCount, @Param("limit") int limit, @Param("offset") int offset);
|
||||
PhonesMap findByPhone(@Param("phone") Long phone);
|
||||
void updateIdCachedData(@Param("json") String json);
|
||||
void updateNameCachedData(@Param("json") String json);
|
||||
void updateFlagCachedData(@Param("json") String json);
|
||||
void resetFidAndPD(@Param("json") String json);
|
||||
void registerJson(@Param("json") String json);
|
||||
void setFidJson(@Param("json") String json);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ public interface UserPackageMapper {
|
|||
|
||||
void updatePackageOnMonitoringSuccess(@Param("id") Long id, @Param("monitoringAt") LocalDateTime monitoringAt);
|
||||
void setLastSearchedDt(@Param("id") Long id);
|
||||
void setFidChanged(@Param("packageIds") List<Long> id);
|
||||
|
||||
UserPackage findPackage(@Param("id") Long id);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,34 +1,29 @@
|
|||
package ru.nbch.credit_tracker.service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.nbch.credit_tracker.entities.app.UserPackage;
|
||||
import ru.nbch.credit_tracker.entities.user_request.monitoring_request.MonitoringRequest;
|
||||
import ru.nbch.credit_tracker.enums.Status;
|
||||
import ru.nbch.credit_tracker.service.signal.UserPackageDao;
|
||||
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class UserPackageService {
|
||||
private final UserPackageDao userPackageService;
|
||||
private final UserPackageMapper userPackageMapper;
|
||||
|
||||
public UserPackageService(UserPackageDao userPackageService) {
|
||||
this.userPackageService = userPackageService;
|
||||
}
|
||||
|
||||
public boolean isPackageNotUnique(MonitoringRequest request) {
|
||||
return userPackageService.isPackageNotUnique(request.getUserId(), request.getPackageName());
|
||||
public UserPackageService(UserPackageMapper userPackageMapper) {
|
||||
this.userPackageMapper = userPackageMapper;
|
||||
}
|
||||
|
||||
public boolean isPackageNotUnique(String userId, String packageName) {
|
||||
return userPackageService.isPackageNotUnique(userId, packageName);
|
||||
return userPackageMapper.isPackageNotUnique(userId, packageName);
|
||||
}
|
||||
|
||||
|
||||
public Long registerPackage(String userId, String packageName, List<Integer> signalTypes) {
|
||||
signalTypes.sort(Comparator.naturalOrder());
|
||||
String types = "1,2";
|
||||
|
|
@ -42,7 +37,7 @@ public class UserPackageService {
|
|||
.createdAt(LocalDateTime.now())
|
||||
.status(Status.ACCEPTED.name())
|
||||
.build();
|
||||
return userPackageService.insertPackage(userPackage);
|
||||
return userPackageMapper.insertPackage(userPackage);
|
||||
}
|
||||
|
||||
public void rejectPackage(String userId, String packageName, List<Integer> signalTypes) {
|
||||
|
|
@ -57,35 +52,25 @@ public class UserPackageService {
|
|||
.createdAt(LocalDateTime.now())
|
||||
.status(Status.REJECTED.name())
|
||||
.build();
|
||||
userPackageService.insertPackage(userPackage);
|
||||
userPackageMapper.insertPackage(userPackage);
|
||||
}
|
||||
|
||||
|
||||
public List<UserPackage> findActivePackages(String userId) {
|
||||
return userPackageService.findUserPackages(userId, Status.ON_MONITORING);
|
||||
return userPackageMapper.findUserPackages(userId, Arrays.asList(Status.ON_MONITORING.name()));
|
||||
}
|
||||
|
||||
public void setFidChanged(List<Long> id) {
|
||||
userPackageMapper.setFidChanged(id);
|
||||
}
|
||||
public List<UserPackage> findAllPackages(String userId) {
|
||||
return userPackageService.findAllPackagesByUserId(userId);
|
||||
}
|
||||
|
||||
public boolean isPackageExists(String username, String packageName) {
|
||||
return userPackageService.isPackageExists(username, packageName, Status.ON_MONITORING);
|
||||
return userPackageMapper.findAllPackagesByUserId(userId);
|
||||
}
|
||||
|
||||
public List<UserPackage> findByMemberCodeAndPackageName(String memberCode, String packageName) {
|
||||
return userPackageService.findByMemberCodeAndPackageName(memberCode, packageName);
|
||||
}
|
||||
|
||||
public boolean isPackagesByStatusExist(String username, String packageName, Status status) {
|
||||
return userPackageService.hasActivePackages(username, packageName, status);
|
||||
}
|
||||
|
||||
public void deletePackage(String username, String packageName, LocalDateTime deactivatedAt) {
|
||||
userPackageService.deletePackage(username, packageName, Status.DELETED, Status.ON_MONITORING, deactivatedAt);
|
||||
return userPackageMapper.findByMemberCodeAndPackageName(memberCode, packageName);
|
||||
}
|
||||
|
||||
public void deletePackageById(Long id, LocalDateTime deactivatedAt) {
|
||||
userPackageService.deletePackageById(id, deactivatedAt);
|
||||
userPackageMapper.deletePackageById(id, Status.DELETED.name(), deactivatedAt);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,6 +79,19 @@ public class PackageRecordsService {
|
|||
}
|
||||
}
|
||||
|
||||
public List<Long> selectUniquePackageIds(List<Long> phones) {
|
||||
try {
|
||||
String json = entityToJsonMapper.writeValueAsString(phones.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.map(phone -> new HashMap<String, Object>() {{
|
||||
put("phone", phone);
|
||||
}}).toList());
|
||||
return packagesRecordsMapper.uniquePackageIdByPhones(json);
|
||||
} catch (JsonProcessingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateNameCache(List<PhonesMap> phonesMaps) {
|
||||
try {
|
||||
String json = entityToJsonMapper.writeValueAsString(phonesMaps.stream()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,53 @@
|
|||
package ru.nbch.credit_tracker.service.signal;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.nbch.credit_tracker.mapper.signal.PhonesMapMapper;
|
||||
import ru.nbch.credit_tracker.model.SubjectProfile;
|
||||
|
||||
@Service
|
||||
public class PhonesMapService {
|
||||
private final PhonesMapMapper phonesMapMapper;
|
||||
private final ObjectMapper entityToJsonMapper;
|
||||
|
||||
public PhonesMapService(PhonesMapMapper phonesMapMapper,
|
||||
ObjectMapper entityToJsonMapper) {
|
||||
this.phonesMapMapper = phonesMapMapper;
|
||||
this.entityToJsonMapper = entityToJsonMapper;
|
||||
}
|
||||
|
||||
public void resetFidAndPDByPhones(List<Long> phones) {
|
||||
try {
|
||||
String json = entityToJsonMapper.writeValueAsString(phones.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.map(phone -> new HashMap<String, Object>() {{
|
||||
put("phone", phone);
|
||||
}}).toList());
|
||||
phonesMapMapper.resetFidAndPD(json);
|
||||
} catch (JsonProcessingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateNameCachedData(List<SubjectProfile> subjectProfiles) {
|
||||
try {
|
||||
String json = entityToJsonMapper.writeValueAsString(subjectProfiles.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.map(subjectProfile -> new HashMap<String, Object>() {{
|
||||
put("fid", subjectProfile.getFid());
|
||||
put("name_1", subjectProfile.getNameData().getLastName());
|
||||
put("first", subjectProfile.getNameData().getFirstName());
|
||||
put("middle", subjectProfile.getNameData().getMiddleName());
|
||||
put("birth_dt", subjectProfile.getNameData().getBirthDate());
|
||||
put("phone", subjectProfile.getPhone());
|
||||
}}).toList());
|
||||
phonesMapMapper.updateNameCachedData(json);
|
||||
} catch (JsonProcessingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
package ru.nbch.credit_tracker.service.signal;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.nbch.credit_tracker.entities.app.UserPackage;
|
||||
import ru.nbch.credit_tracker.enums.Status;
|
||||
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
|
||||
|
||||
@Service
|
||||
public class UserPackageDao {
|
||||
|
||||
private final UserPackageMapper mapper;
|
||||
|
||||
public UserPackageDao(UserPackageMapper mapper) {
|
||||
this.mapper = mapper;
|
||||
}
|
||||
|
||||
public boolean isPackageNotUnique(String userId, String packageName) {
|
||||
return mapper.isPackageNotUnique(userId.substring(0, 6), packageName);
|
||||
}
|
||||
|
||||
public boolean isPackageExists(String userId, String packageName, Status status) {
|
||||
return mapper.isPackageExists(userId.substring(0, 6), packageName, status.name());
|
||||
}
|
||||
|
||||
public boolean hasActivePackages(String userId, String packageName, Status... status) {
|
||||
return mapper.hasActivePackages(userId.substring(0, 6), packageName, Arrays.stream(status).map(Enum::name).toList());
|
||||
}
|
||||
|
||||
public void deletePackage(String userId, String packageName, Status newStatus, Status previousStatus, LocalDateTime deactivatedAt) {
|
||||
mapper.deletePackage(userId.substring(0, 6), packageName, newStatus.name(), previousStatus.name(), deactivatedAt);
|
||||
}
|
||||
|
||||
public void deletePackageById(Long id, LocalDateTime deactivatedAt) {
|
||||
mapper.deletePackageById(id, Status.DELETED.name(), deactivatedAt);
|
||||
}
|
||||
|
||||
public Long insertPackage(UserPackage userPackage) {
|
||||
return mapper.insertPackage(userPackage);
|
||||
}
|
||||
|
||||
public void updatePackageStatus(Long packageId, Status status) {
|
||||
mapper.updatePackageStatus(packageId, status.name());
|
||||
}
|
||||
|
||||
public void updatePackageLastDownloadedReport(Long id, String fileName) {
|
||||
mapper.updatePackageLastDownloadedReport(id, fileName);
|
||||
}
|
||||
|
||||
public void updatePackageOnMonitoringSuccess(Long id, LocalDateTime monitoringAt) {
|
||||
mapper.updatePackageOnMonitoringSuccess(id, monitoringAt);
|
||||
}
|
||||
|
||||
public UserPackage findPackage(Long id) {
|
||||
return mapper.findPackage(id);
|
||||
}
|
||||
|
||||
public List<UserPackage> findUserPackages(String userId, Status... status) {
|
||||
return mapper.findUserPackages(userId.substring(0, 6), Arrays.stream(status).map(Enum::name).toList());
|
||||
}
|
||||
|
||||
public List<UserPackage> findAllPackagesByUserId(String userId) {
|
||||
return mapper.findAllPackagesByUserId(userId.substring(0, 6));
|
||||
}
|
||||
|
||||
public List<UserPackage> findByMemberCodeAndPackageName(String memberCode, String packageName) {
|
||||
return mapper.findByMemberCodeAndPackageName(memberCode.substring(0, 6), packageName);
|
||||
}
|
||||
|
||||
public List<UserPackage> findAllPackagesByStatus(Status status) {
|
||||
return mapper.findAllPackagesByStatus(status.name());
|
||||
}
|
||||
}
|
||||
|
|
@ -8,6 +8,7 @@ import java.nio.file.Paths;
|
|||
import java.nio.file.StandardCopyOption;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
|
@ -53,7 +54,13 @@ public class FidIdEnricher implements Handler<SubjectPayload, PartFilePayload> {
|
|||
.filter(subjectProfile -> subjectProfile.getIdData() == null)
|
||||
.map(SubjectProfile::getFid)
|
||||
.toList();
|
||||
Map<Integer, Id> idByFid = personService.filledPassportsData(noIdDataFids);
|
||||
|
||||
Map<Integer, Id> idByFid;
|
||||
if (!noIdDataFids.isEmpty()) {
|
||||
idByFid = personService.filledPassportsData(noIdDataFids);
|
||||
} else {
|
||||
idByFid = new HashMap<>();
|
||||
}
|
||||
|
||||
List<IdData> idCacheOnUpdate = new ArrayList<>();
|
||||
List<Person> personOnProcessing = subjectsProfile.stream()
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package ru.nbch.credit_tracker.service.task.impl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
|
@ -61,7 +62,12 @@ public class FidNameEnricher implements Handler<SubjectPayload, SubjectPayload>
|
|||
.filter(subjectProfile -> !cachedRecords.containsKey(subjectProfile.getPhone()))
|
||||
.toList();
|
||||
|
||||
Map<String, Name> nameByPhone = personService.findNameByNumber(noFidsData);
|
||||
Map<String, Name> nameByPhone;
|
||||
if (!noFidsData.isEmpty()) {
|
||||
nameByPhone = personService.findNameByNumber(noFidsData);
|
||||
} else {
|
||||
nameByPhone = new HashMap<>();
|
||||
}
|
||||
AtomicInteger cacheHits = context.get(PackageVariable.cacheHits);
|
||||
AtomicInteger cacheMisses = context.get(PackageVariable.cacheMisses);
|
||||
|
||||
|
|
@ -74,6 +80,9 @@ public class FidNameEnricher implements Handler<SubjectPayload, SubjectPayload>
|
|||
cacheMisses.incrementAndGet();
|
||||
Name name = nameByPhone.get(CTUtil.normalizePhoneNumber(phone));
|
||||
if (name == null) {
|
||||
if (noFidsData.isEmpty()) {
|
||||
log.warn("Unexpected scenario...all recs are hit to cache, but nameData was trying to found in indic");
|
||||
}
|
||||
return Stream.of(PhonesMap.builder()
|
||||
.phone(phone)
|
||||
.build());
|
||||
|
|
|
|||
|
|
@ -10,8 +10,10 @@ import ru.nbch.credit_tracker.entities.indic.Name;
|
|||
import ru.nbch.credit_tracker.model.SubjectProfile;
|
||||
import ru.nbch.credit_tracker.model.impl.PackageVariable;
|
||||
import ru.nbch.credit_tracker.model.impl.SubjectPayload;
|
||||
import ru.nbch.credit_tracker.service.UserPackageService;
|
||||
import ru.nbch.credit_tracker.service.indic.PersonServiceV2;
|
||||
import ru.nbch.credit_tracker.service.signal.PackageRecordsService;
|
||||
import ru.nbch.credit_tracker.service.signal.PhonesMapService;
|
||||
import ru.nbch.credit_tracker.service.task.Handler;
|
||||
import ru.nbch.credit_tracker.utils.CTUtil;
|
||||
|
||||
|
|
@ -21,13 +23,19 @@ public class FidNameUpdater implements Handler<SubjectPayload, SubjectPayload> {
|
|||
private final PersonServiceV2 personService;
|
||||
private final CreditTrackerSettings creditTrackerSettings;
|
||||
private final PackageRecordsService packageRecordsService;
|
||||
private final PhonesMapService phonesMapService;
|
||||
private final UserPackageService userPackageService;
|
||||
|
||||
public FidNameUpdater(PersonServiceV2 personService,
|
||||
CreditTrackerSettings creditTrackerSettings,
|
||||
PackageRecordsService packageRecordsService) {
|
||||
PackageRecordsService packageRecordsService,
|
||||
PhonesMapService phonesMapService,
|
||||
UserPackageService userPackageService) {
|
||||
this.personService = personService;
|
||||
this.creditTrackerSettings = creditTrackerSettings;
|
||||
this.packageRecordsService = packageRecordsService;
|
||||
this.phonesMapService = phonesMapService;
|
||||
this.userPackageService = userPackageService;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -44,12 +52,29 @@ public class FidNameUpdater implements Handler<SubjectPayload, SubjectPayload> {
|
|||
if (name == null) {
|
||||
notFoundFidPhones.add(subjectProfile.getPhone());
|
||||
} else if (!subjectProfile.getFid().equals(name.getFid())) {
|
||||
subjectProfile.setFid(name.getFid());
|
||||
subjectProfile.getNameData().setFirstName(name.getFirst());
|
||||
subjectProfile.getNameData().setLastName(name.getLast());
|
||||
subjectProfile.getNameData().setMiddleName(name.getMiddle());
|
||||
subjectProfile.getNameData().setBirthDate(name.getBirthDate());
|
||||
changingFidPhones.add(subjectProfile);
|
||||
}
|
||||
});
|
||||
//1.set to null fid name and id data in signals_phones_map
|
||||
//1.2 set FID_CHANGED = 1 for this package(select by phone)
|
||||
List<Long> changingFids = new ArrayList<>();
|
||||
if (!notFoundFidPhones.isEmpty()) {
|
||||
phonesMapService.resetFidAndPDByPhones(notFoundFidPhones);
|
||||
changingFids.addAll(notFoundFidPhones);
|
||||
}
|
||||
|
||||
if (!changingFidPhones.isEmpty()) {
|
||||
phonesMapService.updateNameCachedData(changingFidPhones);
|
||||
changingFids.addAll(changingFidPhones.stream().map(SubjectProfile::getPhone).toList());
|
||||
}
|
||||
|
||||
if (!changingFids.isEmpty()) {
|
||||
List<Long> packageIds = packageRecordsService.selectUniquePackageIds(changingFids);
|
||||
userPackageService.setFidChanged(packageIds);
|
||||
}
|
||||
//2.set new fid name and id data in signals_phones_map
|
||||
//2.2 set FID_CHANGED = 1 for this package(select by phone)
|
||||
return new SubjectPayload(null, null, null, changingFidPhones);
|
||||
|
|
|
|||
|
|
@ -1,136 +0,0 @@
|
|||
package ru.nbch.credit_tracker.service.task.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Stream;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
|
||||
import ru.nbch.credit_tracker.entities.app.PhonesMap;
|
||||
import ru.nbch.credit_tracker.entities.indic.Name;
|
||||
import ru.nbch.credit_tracker.model.FlagData;
|
||||
import ru.nbch.credit_tracker.model.IdData;
|
||||
import ru.nbch.credit_tracker.model.NameData;
|
||||
import ru.nbch.credit_tracker.model.SubjectProfile;
|
||||
import ru.nbch.credit_tracker.model.impl.PackageVariable;
|
||||
import ru.nbch.credit_tracker.model.impl.SubjectPayload;
|
||||
import ru.nbch.credit_tracker.service.indic.PersonServiceV2;
|
||||
import ru.nbch.credit_tracker.service.signal.PackageRecordsService;
|
||||
import ru.nbch.credit_tracker.service.task.Handler;
|
||||
import ru.nbch.credit_tracker.utils.CTUtil;
|
||||
|
||||
/**
|
||||
* Стадия для сопоставления FID к номеру телефона и регистрации пакета в базе данных.
|
||||
* Так же выполняется поиск и обогащение перс.данными из NAME для дальнейшей обработки.
|
||||
* Имеет функуию при режиме RESTORE у Pipeline, когда фиды были установлены, но данные нужно подтянуть снова
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class FidUpdateNameEnricher implements Handler<SubjectPayload, SubjectPayload> {
|
||||
private final PersonServiceV2 personService;
|
||||
private final CreditTrackerSettings creditTrackerSettings;
|
||||
private final PackageRecordsService packageRecordsService;
|
||||
|
||||
public FidUpdateNameEnricher(PersonServiceV2 personService,
|
||||
CreditTrackerSettings creditTrackerSettings,
|
||||
PackageRecordsService packageRecordsService) {
|
||||
this.personService = personService;
|
||||
this.creditTrackerSettings = creditTrackerSettings;
|
||||
this.packageRecordsService = packageRecordsService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubjectPayload handle(SubjectPayload taskPayload) {
|
||||
List<SubjectProfile> subjects = taskPayload.getSubjects();
|
||||
var ctx = obtainContext(PackageVariable.class, taskPayload);
|
||||
Long packageId = ctx.get(PackageVariable.packageId);
|
||||
log.debug("NameEnricherStage handle by packageId: {}, size of bucket for save: {}", packageId, subjects.size());
|
||||
//найдем телефоны в табличном кэше
|
||||
processByNumber(subjects);
|
||||
return taskPayload;
|
||||
}
|
||||
|
||||
private void processByNumber(List<SubjectProfile> subjects) {
|
||||
|
||||
Map<String, Name> nameByPhone = personService.findNameByNumber(subjects);
|
||||
|
||||
List<PhonesMap> subjectForSave = subjects.stream().flatMap(subject -> {
|
||||
Name name = nameByPhone.get(CTUtil.normalizePhoneNumber(subject.getPhone()));
|
||||
if (name == null) {
|
||||
//todo set fid to null
|
||||
return Stream.of(PhonesMap.builder()
|
||||
.fid(null)
|
||||
.phone(subject.getPhone())
|
||||
.name1(null)
|
||||
.first(null)
|
||||
.middle(null)
|
||||
.birthDt(null)
|
||||
.build());
|
||||
}
|
||||
return Stream.of(PhonesMap.builder()
|
||||
.fid(subject.getFid())
|
||||
.phone(subject.getPhone())
|
||||
.name1(name.getLast())
|
||||
.first(name.getFirst())
|
||||
.middle(name.getMiddle())
|
||||
.birthDt(name.getBirthDate())
|
||||
.build());
|
||||
}).toList();
|
||||
|
||||
packageRecordsService.updateNameCache(subjectForSave);
|
||||
}
|
||||
|
||||
private void fillByCache(SubjectProfile subjectProfile, PhonesMap cachedRecord) {
|
||||
NameData nameData = NameData.builder()
|
||||
.middleName(cachedRecord.getMiddle())
|
||||
.firstName(cachedRecord.getFirst())
|
||||
.lastName(cachedRecord.getName1())
|
||||
.birthDate(cachedRecord.getBirthDt())
|
||||
.build();
|
||||
subjectProfile.setNameData(nameData);
|
||||
|
||||
Optional.of(cachedRecord)
|
||||
.filter(cr -> cachedRecord.getSerNum() != null && cachedRecord.getIdType() != null)
|
||||
.map(cr -> Optional.of(
|
||||
(IdData.builder()
|
||||
.idNum(cr.getSerNum())
|
||||
.idType(cr.getIdType())
|
||||
.build()
|
||||
)))
|
||||
.ifPresent(idData -> subjectProfile.setIdData(idData.get()));
|
||||
|
||||
Optional.of(cachedRecord)
|
||||
.filter(cr -> cachedRecord.getFlagDebt5000() != null && cachedRecord.getFlag90days() != null)
|
||||
.map(cr -> Optional.of(
|
||||
(FlagData.builder()
|
||||
.flag_debt5000(cr.getFlagDebt5000())
|
||||
.flag_90_12(cr.getFlag90days())
|
||||
.build()
|
||||
)))
|
||||
.ifPresent(flagData -> subjectProfile.setFlagData(flagData.get()));
|
||||
}
|
||||
|
||||
private void fillByName(SubjectProfile subjectProfile, Name name) {
|
||||
NameData nameData = NameData.builder()
|
||||
.middleName(name.getMiddle())
|
||||
.firstName(name.getFirst())
|
||||
.lastName(name.getLast())
|
||||
.fileSinceDate(name.getFileSinceDate())
|
||||
.birthDate(name.getBirthDate())
|
||||
.build();
|
||||
|
||||
subjectProfile.setFid(name.getFid());
|
||||
subjectProfile.setNameData(nameData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int preferredConcurrency() {
|
||||
return creditTrackerSettings.getPipeline().nameEnricherStageConcurrency();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubjectPayload cookPoison() {
|
||||
return SubjectPayload.POISON;
|
||||
}
|
||||
}
|
||||
|
|
@ -22,6 +22,15 @@
|
|||
FROM signals_packages_records
|
||||
WHERE id = #{id}
|
||||
</select>
|
||||
|
||||
<select id="uniquePackageIdByPhones" resultType="java.util.List">
|
||||
WITH src AS (SELECT phone
|
||||
FROM json_to_recordset(#{json}::json) AS t(
|
||||
phone bigint
|
||||
))
|
||||
select distinct (package_id) from signals_packages_records where phone_l in (select * from src)
|
||||
</select>
|
||||
|
||||
<select id="registerJson" parameterType="string" resultType="long">
|
||||
WITH src AS (SELECT row_number() OVER () AS rn,
|
||||
subject_id,
|
||||
|
|
|
|||
|
|
@ -128,6 +128,25 @@
|
|||
where dst.phone = src.phone;
|
||||
</update>
|
||||
|
||||
<update id="updateNameCachedData" parameterType="string">
|
||||
update signals_phones_map dst
|
||||
set
|
||||
fid = src.fid,
|
||||
name_1 = src.name_1,
|
||||
first = src.first,
|
||||
middle = src.middle,
|
||||
birth_dt = src.birth_dt
|
||||
FROM json_to_recordset(#{json}::json) AS src(
|
||||
fid int,
|
||||
phone bigint,
|
||||
name_1 varchar(255),
|
||||
first varchar(255),
|
||||
middle varchar(255),
|
||||
birth_dt timestamp
|
||||
)
|
||||
where dst.phone = src.phone;
|
||||
</update>
|
||||
|
||||
<update id="updateFlagCachedData" parameterType="string">
|
||||
update signals_phones_map dst
|
||||
set flag_debt5000 = src.flag_debt5000,
|
||||
|
|
@ -152,6 +171,23 @@
|
|||
where dst.id = src.id;
|
||||
</update>
|
||||
|
||||
<update id="resetFidAndPD" parameterType="string">
|
||||
update signals_phones_map dst
|
||||
|
||||
set fid = null,
|
||||
name_1 = null,
|
||||
first = null,
|
||||
middle = null,
|
||||
birth_dt = null,
|
||||
ser_num = null,
|
||||
id_type = null,
|
||||
flag_debt5000 = null,
|
||||
flag_90_12 = null
|
||||
FROM json_to_recordset(#{json}::json) AS src(
|
||||
phone bigint)
|
||||
where dst.phone = src.phone
|
||||
</update>
|
||||
|
||||
|
||||
<!-- <select id="pageByPackageIdAndOlderThanN" resultMap="PhoneFidMapResultMap" resultType="java.util.List">-->
|
||||
<!-- SELECT id,-->
|
||||
|
|
|
|||
|
|
@ -74,6 +74,15 @@
|
|||
WHERE id = #{packageId}
|
||||
</update>
|
||||
|
||||
<update id="setFidChanged">
|
||||
UPDATE signals_user_packages
|
||||
SET fid_changed = 1
|
||||
WHERE id in
|
||||
<foreach item="packageId" collection="packageIds" open="(" separator="," close=")">
|
||||
#{packageId}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<update id="updatePackageLastDownloadedReport">
|
||||
UPDATE signals_user_packages
|
||||
SET last_downloaded_report = #{fileName}
|
||||
|
|
|
|||
|
|
@ -6,11 +6,13 @@ CREATE TABLE app_version
|
|||
alter table signals_user_packages
|
||||
add LAST_SEARCHED_AT timestamp;
|
||||
alter table signals_user_packages
|
||||
add signal_types varchar(255);
|
||||
add SIGNAL_TYPES varchar(255);
|
||||
alter table signals_user_packages
|
||||
add REJECT_STATUS varchar(255);
|
||||
alter table signals_user_packages
|
||||
add EXTERNAL_PACKAGE_NAME varchar(255);
|
||||
alter table signals_user_packages
|
||||
add FID_CHANGED smallint;
|
||||
|
||||
|
||||
alter table signals_hits
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue