etreschenkov 2025-12-16 17:25:47 +03:00
parent a9f9588258
commit d87444dac1
23 changed files with 371 additions and 480 deletions

View file

@ -5,7 +5,7 @@ import java.util.function.Supplier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper;
import ru.nbch.credit_tracker.mapper.signal.PackagesRecordsMapper;
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
import ru.nbch.credit_tracker.model.impl.PartFilePayload;
import ru.nbch.credit_tracker.model.impl.SignalXmlFilePayload;
@ -13,7 +13,6 @@ import ru.nbch.credit_tracker.model.impl.SubjectPayload;
import ru.nbch.credit_tracker.service.task.SetupParam;
import ru.nbch.credit_tracker.service.task.impl.KickPipeLineDefaultImpl;
import ru.nbch.credit_tracker.service.task.impl.KickPipeLineRepeatedRestoreImpl;
import ru.nbch.credit_tracker.service.task.impl.KickPipeLineRestoreImpl;
import ru.nbch.credit_tracker.service.task.impl.XmlMergeCoordinator;
import ru.nbch.credit_tracker.service.task.setup.IPipeLineStarter;
import ru.nbch.credit_tracker.service.task.setup.IPipeLineTerminator;
@ -25,12 +24,12 @@ public class PipelineStarterConfig {
public Function<SetupParam, IPipeLineStarter<SubjectPayload>> pipelineStarterFactory(StaxXmlProcessor xml,
CreditTrackerSettings creditTrackerSettings,
UserPackageMapper userPackageMapper,
PhoneFidMapMapper phoneFidMapMapper) {
PackagesRecordsMapper phoneFidMapMapper) {
return (setupParam) -> switch (setupParam.mode()) {
case DEFAULT ->
new KickPipeLineDefaultImpl(xml, setupParam, userPackageMapper, phoneFidMapMapper, creditTrackerSettings);
case RESTORE ->
new KickPipeLineRestoreImpl(xml, setupParam, userPackageMapper, phoneFidMapMapper, creditTrackerSettings);
new KickPipeLineDefaultImpl(xml, setupParam, userPackageMapper, phoneFidMapMapper, creditTrackerSettings);
case REPEATED_RESTORE ->
new KickPipeLineRepeatedRestoreImpl(xml, setupParam, userPackageMapper, phoneFidMapMapper, creditTrackerSettings);
};

View file

@ -0,0 +1,20 @@
package ru.nbch.credit_tracker.entities.app;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class PackagesRecordsMap {
private Long id;
private Long packageId;
private String subjectId;
private String phone;
private String errorText;
}

View file

@ -1,41 +0,0 @@
package ru.nbch.credit_tracker.entities.app;
import java.util.UUID;
import lombok.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class PhoneFidMap {
private Long id;
private Long packageId;
private UUID recUuid;
private String subjectId;
private String phone;
private Integer fid;
private Integer flagDebt5000;
private Integer flag90days;
private LocalDateTime calculatedAt;
private String errorText;
// NAME data
private String firstName;
private String lastName;
private String middleName;
private LocalDate birthDate;
private LocalDate fileSinceDate;
//ID data
private String serNum;
private String idNum;
private LocalDate issDate;
private String idType;
private String idType2;
private LocalDate IdfileSinceDate;
boolean isFullFilled = false;
}

View file

@ -0,0 +1,29 @@
package ru.nbch.credit_tracker.entities.app;
import java.time.LocalDate;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class PhonesMap {
private Long id;
private Integer fid;
private String name1;
private String first;
private String middle;
private LocalDate birthDt;
private String serNum;
private String idType;
private Integer flagDebt5000;
private Integer flag90days;
private LocalDateTime searchedAt;
private LocalDateTime calculatedAt;
}

View file

@ -0,0 +1,14 @@
package ru.nbch.credit_tracker.mapper.signal;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap;
@Mapper
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);
Long deleteByPackageId(@Param("packageId") Long id);
}

View file

@ -1,39 +0,0 @@
package ru.nbch.credit_tracker.mapper.signal;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import ru.nbch.credit_tracker.entities.app.PhoneFidMap;
import ru.nbch.credit_tracker.entities.user_request.monitoring_request.Subject;
import java.util.Collection;
import java.util.List;
@Mapper
public interface PhoneFidMapMapper {
void registerSubjects(@Param("subjects") List<Subject> subjects, @Param("packageId") Long packageId);
void register(@Param("phoneFidMap") List<PhoneFidMap> phoneFidMap);
List<Long> registerJson(@Param("json") String json);
void setFidJson(@Param("json") String json);
void setErrorJson(@Param("json") String json);
void registerWithId(@Param("phoneFidMap") List<PhoneFidMap> phoneFidMap);
List<PhoneFidMap> findFullPhoneFidMap(@Param("packageId") Long packageId, @Param("limit") int limit, @Param("offset") int offset);
List<PhoneFidMap> findNullFidPhoneFidMap(@Param("packageId") Long packageId, @Param("limit") int limit, @Param("offset") int offset);
List<PhoneFidMap> findNotNullFidPhoneFidMap(@Param("packageId") Long packageId, @Param("limit") int limit, @Param("offset") int offset);
List<PhoneFidMap> pageByPackageIdAndOlderThanN(@Param("packageId") Long packageId, @Param("limit") int limit, @Param("offset") int offset, @Param("daysCount") Integer daysCount);
List<PhoneFidMap> pageByPackageIdAndNewerThanN(@Param("packageId") Long packageId, @Param("limit") int limit, @Param("offset") int offset, @Param("daysCount") Integer daysCount);
void updatePhoneFidMaps(@Param("subjects") Collection<PhoneFidMap> subjects);
void updateOne(@Param("subject") PhoneFidMap subject);
void updateFid(@Param("subjects") Collection<PhoneFidMap> subjects);
void updatePhoneFidMapsErrors(@Param("subjects") List<PhoneFidMap> subjects);
PhoneFidMap findPhoneFidMapById(@Param("id") Long packageId);
boolean hasNonNullFids(@Param("packageId") Long packageId);
Long deleteByPackageId(@Param("packageId") Long id);
boolean hasOldRow(@Param("packageId") Long packageId, @Param("daysCount") Integer daysCount);
}

View file

@ -12,7 +12,7 @@ import org.springframework.aop.framework.AopContext;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.app.PhoneFidMap;
import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap;
import ru.nbch.credit_tracker.entities.app.UserPackage;
import ru.nbch.credit_tracker.entities.external_response.monitoring_report_error.MonitoringReportErrors;
import ru.nbch.credit_tracker.enums.RejectedStatus;
@ -75,9 +75,9 @@ public class MonitoringErrorProcesingService {
staxXmlProcessor.read(in, MonitoringReportErrors.class,
request -> {
if (!request.getPersons().isEmpty()) {
List<PhoneFidMap> subjects = request.getPersons().stream().map(p -> {
List<PackagesRecordsMap> subjects = request.getPersons().stream().map(p -> {
log.warn("Ошибка при формировании субъекта. package_id = {}, id = {}. Описание: {}", packageId, p.getUid(), p.getValue());
return PhoneFidMap.builder()
return PackagesRecordsMap.builder()
.id(p.getUid())
.errorText(p.getValue())
.build();

View file

@ -34,7 +34,7 @@ import ru.nbch.credit_tracker.entities.user_response.monitoring_signal_response.
import ru.nbch.credit_tracker.entities.user_response.monitoring_signal_response.Subject;
import ru.nbch.credit_tracker.enums.Status;
import ru.nbch.credit_tracker.mapper.signal.FlagDetailMapper;
import ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper;
import ru.nbch.credit_tracker.mapper.signal.PackagesRecordsMapper;
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
import ru.nbch.credit_tracker.service.signal.HitsService;
import ru.nbch.credit_tracker.service.signal.SignalRestService;
@ -57,7 +57,7 @@ public class MonitoringService {
private final UserPackageMapper userPackageMapper;
private final StaxXmlProcessor staxXmlProcessor;
private final HitsService hitsService;
private final PhoneFidMapMapper phoneFidMapMapper;
private final PackagesRecordsMapper phoneFidMapMapper;
private final CreditTrackerSettings config;
public MonitoringService(SignalRestService signalRestService,
@ -65,7 +65,7 @@ public class MonitoringService {
UserPackageMapper userPackageMapper,
StaxXmlProcessor staxXmlProcessor,
HitsService hitsService,
PhoneFidMapMapper phoneFidMapMapper,
PackagesRecordsMapper phoneFidMapMapper,
CreditTrackerSettings config) {
this.signalRestService = signalRestService;
this.flagDetailMapper = flagDetailMapper;
@ -100,10 +100,10 @@ public class MonitoringService {
private void processPackage(UserPackage userPackage) {
log.info("Processing package");
if (!phoneFidMapMapper.hasNonNullFids(userPackage.getId())) {
log.info("Package has no fids. Package will be skipped.");
return;
}
// if (!phoneFidMapMapper.hasNonNullFids(userPackage.getId())) {
// log.info("Package has no fids. Package will be skipped.");
// return;
// }
SgnlOnlineReport onlineReports = signalRestService.getReports(userPackage.getUserId().substring(0, 6) + "_" + userPackage.getPackageName());
if (onlineReports == null) {

View file

@ -9,7 +9,7 @@ import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.app.UserPackage;
import ru.nbch.credit_tracker.enums.Status;
import ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper;
import ru.nbch.credit_tracker.mapper.signal.PackagesRecordsMapper;
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
import ru.nbch.credit_tracker.service.task.Pipeline;
import ru.nbch.credit_tracker.service.task.PipelinePackageFabric;
@ -30,7 +30,7 @@ import ru.nbch.credit_tracker.utils.error.ExceptionUtils;
public class UpdateProcessingPackagesService {
private final UserPackageMapper userPackageMapper;
private final PhoneFidMapMapper phoneFidMapMapper;
private final PackagesRecordsMapper phoneFidMapMapper;
private final PipelinePackageFabric pipelinePackageManager;
private final PipelinePackageOrchestrator pipelineOrchestrator;
private final CreditTrackerSettings creditTrackerSettings;
@ -39,7 +39,7 @@ public class UpdateProcessingPackagesService {
private final ExecutorService saverExecutorService;
public UpdateProcessingPackagesService(UserPackageMapper userPackageMapper,
PhoneFidMapMapper phoneFidMapMapper,
PackagesRecordsMapper phoneFidMapMapper,
PipelinePackageFabric pipelinePackageManager, PipelinePackageOrchestrator pipelineOrchestrator,
CreditTrackerSettings creditTrackerSettings,
Saver saver,
@ -87,7 +87,7 @@ public class UpdateProcessingPackagesService {
log.debug("Found {} packages in status PROCESSING and rejected_status = null", packages.size());
for (UserPackage userPackage : packages) {
try {
Pipeline pipeline = pipelinePackageManager.build(new SetupParam(userPackage.getId(), null, PipelineMode.RESTORE));
Pipeline pipeline = pipelinePackageManager.build(new SetupParam(userPackage.getId(), null, PipelineMode.DEFAULT));
pipelineOrchestrator.startOrDelay(pipeline, userPackage.getId());
} catch (Exception e) {
log.error("Error build restore pipeline for packageId {}: {}", userPackage.getId(), ExceptionUtils.getStackTrace(e));

View file

@ -12,10 +12,11 @@ import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.entities.app.PhoneFidMap;
import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap;
import ru.nbch.credit_tracker.entities.app.PhonesMap;
import ru.nbch.credit_tracker.entities.indic.Name;
import ru.nbch.credit_tracker.mapper.signal.FlagDetailMapper;
import ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper;
import ru.nbch.credit_tracker.mapper.signal.PackagesRecordsMapper;
import ru.nbch.credit_tracker.model.SubjectProfile;
import ru.nbch.credit_tracker.repository.PhoneRepository;
import ru.nbch.credit_tracker.utils.CTUtil;
@ -25,7 +26,7 @@ import ru.nbch.credit_tracker.utils.CTUtil;
public class PhoneService2 {
private final PhoneRepository phoneRepository;
private final PhoneFidMapMapper phoneFidMapMapper;
private final PackagesRecordsMapper phoneFidMapMapper;
private final FlagDetailMapper flagDetailMapper;
private final ObjectMapper entityToJsonMapper;
private final Comparator<Name> byDateThenIdNullSafe =
@ -33,7 +34,7 @@ public class PhoneService2 {
.thenComparing(Name::getFid);
public PhoneService2(PhoneRepository phoneRepository,
PhoneFidMapMapper phoneFidMapMapper,
PackagesRecordsMapper phoneFidMapMapper,
FlagDetailMapper flagDetailMapper,
ObjectMapper entityToJsonMapper) {
this.phoneRepository = phoneRepository;
@ -93,7 +94,7 @@ public class PhoneService2 {
));
}
public List<Long> registerSubjects(List<PhoneFidMap> subjects) {
public List<Long> registerSubjects(List<PackagesRecordsMap> subjects) {
try {
String json = entityToJsonMapper.writeValueAsString(subjects.stream()
.map(phoneFidMap -> new HashMap<String, Object>() {{
@ -109,7 +110,8 @@ public class PhoneService2 {
}
}
public void updateFid(List<PhoneFidMap> subjects) {
public void updateFid(List<PhonesMap> subjects) {
try {
//регистрация в signals_phone_fid_map
String json = entityToJsonMapper.writeValueAsString(subjects.stream()
@ -118,30 +120,14 @@ public class PhoneService2 {
put("fid", phoneFidMap.getFid());
put("searched_at", phoneFidMap.getCalculatedAt());
}}).toList());
phoneFidMapMapper.setFidJson(json);
//fixme теперь апдейтится(insert) signals_phones_map
// phoneFidMapMapper.setFidJson(json);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
public void registerSignals(List<PhoneFidMap> subjects) {
try {
//регистрация в signals_flags - апдейтим при FlagsEnricher
String jsonFlagDetail = entityToJsonMapper.writeValueAsString(subjects.stream()
.filter(phoneFidMap -> phoneFidMap.getFid() != null)
.map(subject -> new HashMap<String, Object>() {{
put("subject_id", subject.getSubjectId());
put("fid", subject.getFid());
put("phone", subject.getPhone());
put("map_id", subject.getId());
}}).toList());
flagDetailMapper.updateCalcFlags(jsonFlagDetail);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
public void updateOnError(List<PhoneFidMap> subjects) {
public void updateOnError(List<PackagesRecordsMap> subjects) {
try {
String json = entityToJsonMapper.writeValueAsString(subjects.stream()
.map(phoneFidMap -> new HashMap<String, Object>() {{
@ -154,7 +140,7 @@ public class PhoneService2 {
}
}
public List<PhoneFidMap> pageByPackageId(Long packageId, Integer limit, Integer offset) {
public List<PackagesRecordsMap> pageByPackageId(Long packageId, Integer limit, Integer offset) {
return phoneFidMapMapper.findFullPhoneFidMap(packageId, limit, offset);
}

View file

@ -6,7 +6,7 @@ import java.util.Map;
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.PhoneFidMap;
import ru.nbch.credit_tracker.entities.app.PhonesMap;
import ru.nbch.credit_tracker.entities.indic.Name;
import ru.nbch.credit_tracker.model.NameData;
import ru.nbch.credit_tracker.model.SubjectProfile;
@ -51,7 +51,7 @@ public class FidNameEnricher implements Handler<SubjectPayload, SubjectPayload>
private void processByNumber(List<SubjectProfile> subjects) {
LocalDateTime now = LocalDateTime.now();
Map<String, Name> nameByPhone = phoneService2.findNameByNumber(subjects);
List<PhoneFidMap> subjectForSave = subjects.stream().map(subject -> {
List<PhonesMap> subjectForSave = subjects.stream().map(subject -> {
Name name = nameByPhone.get(CTUtil.normalizePhoneNumber(subject.getPhone()));
if (name != null) {
NameData nameData = NameData.builder()
@ -68,7 +68,7 @@ public class FidNameEnricher implements Handler<SubjectPayload, SubjectPayload>
subject.setFid(null);
}
return PhoneFidMap.builder()
return PhonesMap.builder()
.id(subject.getMapId())
.fid(subject.getFid())
.calculatedAt(now)
@ -76,7 +76,6 @@ public class FidNameEnricher implements Handler<SubjectPayload, SubjectPayload>
}).toList();
phoneService2.updateFid(subjectForSave);
phoneService2.registerSignals(subjectForSave);
}
private void processByFid(List<SubjectProfile> subjects) {

View file

@ -6,11 +6,11 @@ import java.util.concurrent.BlockingQueue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.app.PhoneFidMap;
import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap;
import ru.nbch.credit_tracker.entities.app.UserPackage;
import ru.nbch.credit_tracker.enums.PoisonType;
import ru.nbch.credit_tracker.exceptions.SignalClientException;
import ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper;
import ru.nbch.credit_tracker.mapper.signal.PackagesRecordsMapper;
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
import ru.nbch.credit_tracker.model.PipelineContext;
import ru.nbch.credit_tracker.model.SubjectProfile;
@ -27,7 +27,7 @@ public abstract class KickPipeLine implements IPipeLineStarter<SubjectPayload> {
private final Path pkgPath;
private final StaxXmlProcessor xmlProcessor;
protected final UserPackageMapper userPackageMapper;
protected final PhoneFidMapMapper phoneFidMapMapper;
protected final PackagesRecordsMapper phoneFidMapMapper;
protected final CreditTrackerSettings creditTrackerSettings;
private final int BATCH_SIZE;
private boolean isInterrupted = false;
@ -38,7 +38,7 @@ public abstract class KickPipeLine implements IPipeLineStarter<SubjectPayload> {
public KickPipeLine(StaxXmlProcessor xmlProcessor,
SetupParam setupParam,
UserPackageMapper userPackageMapper,
PhoneFidMapMapper phoneFidMapMapper,
PackagesRecordsMapper phoneFidMapMapper,
CreditTrackerSettings creditTrackerSettings) {
this.packageId = setupParam.packageId();
this.pkgPath = setupParam.xmlReqPath();
@ -68,14 +68,12 @@ public abstract class KickPipeLine implements IPipeLineStarter<SubjectPayload> {
context.store(PackageVariable.packageId, packageId);
int limit = BATCH_SIZE;
UserPackage userPackage = userPackageMapper.findPackage(packageId);
List<PhoneFidMap> page = nextPage(limit);
List<PackagesRecordsMap> page = nextPage(limit);
while (!page.isEmpty()) {
log.debug("Get page {}", page.size());
List<SubjectProfile> subjectProfiles = page.stream().map(phoneFidMap -> SubjectProfile.builder()
.mapId(phoneFidMap.getId())
.identifier(phoneFidMap.getSubjectId())
//наличие этого поля зависит от выборки, в определенных select намеренно опущено это поле
.fid(phoneFidMap.getFid())
.phone(phoneFidMap.getPhone())
.build()).toList();
try {
@ -108,5 +106,5 @@ public abstract class KickPipeLine implements IPipeLineStarter<SubjectPayload> {
}
protected abstract PipelineMode mode();
protected abstract List<PhoneFidMap> nextPage(Integer limit);
protected abstract List<PackagesRecordsMap> nextPage(Integer limit);
}

View file

@ -2,8 +2,8 @@ package ru.nbch.credit_tracker.service.task.impl;
import java.util.List;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.app.PhoneFidMap;
import ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper;
import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap;
import ru.nbch.credit_tracker.mapper.signal.PackagesRecordsMapper;
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
import ru.nbch.credit_tracker.service.task.SetupParam;
import ru.nbch.credit_tracker.service.xml.stax.StaxXmlProcessor;
@ -13,7 +13,7 @@ public class KickPipeLineDefaultImpl extends KickPipeLine {
public KickPipeLineDefaultImpl(StaxXmlProcessor xmlProcessor,
SetupParam setupParam,
UserPackageMapper userPackageMapper,
PhoneFidMapMapper phoneFidMapMapper,
PackagesRecordsMapper phoneFidMapMapper,
CreditTrackerSettings creditTrackerSettings) {
super(xmlProcessor, setupParam, userPackageMapper, phoneFidMapMapper, creditTrackerSettings);
}
@ -24,7 +24,7 @@ public class KickPipeLineDefaultImpl extends KickPipeLine {
}
@Override
protected List<PhoneFidMap> nextPage(Integer limit) {
protected List<PackagesRecordsMap> nextPage(Integer limit) {
return phoneFidMapMapper.findFullPhoneFidMap(packageId, limit, offset);
}

View file

@ -3,8 +3,8 @@ package ru.nbch.credit_tracker.service.task.impl;
import java.util.ArrayList;
import java.util.List;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.app.PhoneFidMap;
import ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper;
import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap;
import ru.nbch.credit_tracker.mapper.signal.PackagesRecordsMapper;
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
import ru.nbch.credit_tracker.service.task.SetupParam;
import ru.nbch.credit_tracker.service.xml.stax.StaxXmlProcessor;
@ -16,7 +16,7 @@ public class KickPipeLineRepeatedRestoreImpl extends KickPipeLine {
public KickPipeLineRepeatedRestoreImpl(StaxXmlProcessor xmlProcessor,
SetupParam setupParam,
UserPackageMapper userPackageMapper,
PhoneFidMapMapper phoneFidMapMapper,
PackagesRecordsMapper phoneFidMapMapper,
CreditTrackerSettings creditTrackerSettings) {
super(xmlProcessor, setupParam, userPackageMapper, phoneFidMapMapper, creditTrackerSettings);
this.daysToUpdateFlags = creditTrackerSettings.getDaysToUpdateFlags().intValue();
@ -28,16 +28,17 @@ public class KickPipeLineRepeatedRestoreImpl extends KickPipeLine {
}
@Override
protected List<PhoneFidMap> nextPage(Integer limit) {
List<PhoneFidMap> pageWithNullFids = new ArrayList<>();
if (!oldRowsWereFound) {
pageWithNullFids = phoneFidMapMapper.pageByPackageIdAndOlderThanN(packageId, limit, offset, daysToUpdateFlags);
}
if (pageWithNullFids.isEmpty()) {
oldRowsWereFound = true;
offset = 0;
return phoneFidMapMapper.pageByPackageIdAndNewerThanN(packageId, limit, offset, daysToUpdateFlags);
}
protected List<PackagesRecordsMap> nextPage(Integer limit) {
List<PackagesRecordsMap> pageWithNullFids = new ArrayList<>();
//fixme здесь должен быть запрос к таблице signals_phones_map, см. xml маппер
// if (!oldRowsWereFound) {
// pageWithNullFids = phoneFidMapMapper.pageByPackageIdAndOlderThanN(packageId, limit, offset, daysToUpdateFlags);
// }
// if (pageWithNullFids.isEmpty()) {
// oldRowsWereFound = true;
// offset = 0;
// return phoneFidMapMapper.pageByPackageIdAndNewerThanN(packageId, limit, offset, daysToUpdateFlags);
// }
return pageWithNullFids;
}
}

View file

@ -3,8 +3,8 @@ package ru.nbch.credit_tracker.service.task.impl;
import java.util.ArrayList;
import java.util.List;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.app.PhoneFidMap;
import ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper;
import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap;
import ru.nbch.credit_tracker.mapper.signal.PackagesRecordsMapper;
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
import ru.nbch.credit_tracker.service.task.SetupParam;
import ru.nbch.credit_tracker.service.xml.stax.StaxXmlProcessor;
@ -15,7 +15,7 @@ public class KickPipeLineRestoreImpl extends KickPipeLine {
public KickPipeLineRestoreImpl(StaxXmlProcessor xmlProcessor,
SetupParam setupParam,
UserPackageMapper userPackageMapper,
PhoneFidMapMapper phoneFidMapMapper,
PackagesRecordsMapper phoneFidMapMapper,
CreditTrackerSettings creditTrackerSettings) {
super(xmlProcessor, setupParam, userPackageMapper, phoneFidMapMapper, creditTrackerSettings);
}
@ -26,18 +26,19 @@ public class KickPipeLineRestoreImpl extends KickPipeLine {
}
@Override
protected List<PhoneFidMap> nextPage(Integer limit) {
List<PhoneFidMap> page = new ArrayList<>();
if (!nullFidsWereFound) {
page = phoneFidMapMapper.findNullFidPhoneFidMap(packageId, limit, offset);
}
if (page.isEmpty()) {
if (!nullFidsWereFound) {
nullFidsWereFound = true;
offset = 0;
}
return phoneFidMapMapper.findNotNullFidPhoneFidMap(packageId, limit, offset);
}
protected List<PackagesRecordsMap> nextPage(Integer limit) {
//todo рассмотреть к удалению
List<PackagesRecordsMap> page = new ArrayList<>();
// if (!nullFidsWereFound) {
// page = phoneFidMapMapper.findNullFidPhoneFidMap(packageId, limit, offset);
// }
// if (page.isEmpty()) {
// if (!nullFidsWereFound) {
// nullFidsWereFound = true;
// offset = 0;
// }
// return phoneFidMapMapper.findNotNullFidPhoneFidMap(packageId, limit, offset);
// }
return page;
}
}

View file

@ -9,7 +9,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.app.PhoneFidMap;
import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap;
import ru.nbch.credit_tracker.entities.user_request.monitoring_request.MonitoringRequest;
import ru.nbch.credit_tracker.enums.Status;
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
@ -43,7 +43,7 @@ public class Saver {
request -> {
if (!request.getSubjects().getSubject().isEmpty()) {
log.trace("Reading subject's {} batch. PackageId: {}", request.getSubjects().getSubject().size(), packageId);
List<PhoneFidMap> subjectForSave = request.getSubjects().getSubject().stream().map(subject -> PhoneFidMap.builder()
List<PackagesRecordsMap> subjectForSave = request.getSubjects().getSubject().stream().map(subject -> PackagesRecordsMap.builder()
.subjectId(subject.getId())
.packageId(packageId)
.phone(subject.getClientId())

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="ru.nbch.credit_tracker.mapper.signal.PackagesRecordsMapper">
<resultMap id="PhoneFidMapResultMap" type="ru.nbch.credit_tracker.entities.app.PackagesRecordsMap">
<result property="id" column="id"/>
<result property="packageId" column="package_id"/>
<result property="subjectId" column="subject_id"/>
<result property="phone" column="phone"/>
<result property="errorText" column="error_text"/>
</resultMap>
<select id="registerJson" parameterType="string" resultType="long">
WITH src AS (SELECT row_number() OVER () AS rn,
subject_id,
phone,
package_id
FROM json_to_recordset(#{json}::json) AS t(
subject_id varchar(255),
phone text,
package_id bigint
))
INSERT
INTO signals_packages_records
(subject_id, phone, package_id)
SELECT subject_id,
phone,
package_id
FROM src
ORDER BY rn
RETURNING id;
</select>
<update id="setErrorJson" parameterType="string">
update signals_packages_records dst
set error_text = src.error_text
FROM json_to_recordset(#{json}::json) AS src(
id bigint,
error_text text
)
where dst.id = src.id;
</update>
<delete id="deleteByPackageId" parameterType="long">
DELETE
FROM signals_packages_records
WHERE package_id = #{packageId}
</delete>
<select id="findFullPhoneFidMap" resultMap="PhoneFidMapResultMap" resultType="java.util.List">
SELECT id,
package_id,
subject_id,
phone,
error_text
FROM signals_packages_records
WHERE package_id = #{packageId}
ORDER BY id
LIMIT #{limit} OFFSET #{offset}
</select>
</mapper>

View file

@ -1,249 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper">
<resultMap id="PhoneFidMapResultMap" type="ru.nbch.credit_tracker.entities.app.PhoneFidMap">
<result property="id" column="id"/>
<result property="packageId" column="package_id"/>
<result property="subjectId" column="subject_id"/>
<result property="phone" column="phone"/>
<result property="fid" column="fid"/>
<result property="flagDebt5000" column="flag_debt5000"/>
<result property="flag90days" column="flag_90_12"/>
<result property="calculatedAt" column="calculated_at"/>
<result property="errorText" column="error_text"/>
</resultMap>
<insert id="registerSubjects" parameterType="java.util.List">
INSERT INTO signals_phone_fid_map (subject_id, phone, fid, package_id)
values
<foreach collection="subjects" item="subject" separator=",">
(#{subject.id}, #{subject.clientId}, NULL, #{packageId})
</foreach>
</insert>
<insert id="register" parameterType="java.util.List">
INSERT INTO signals_phone_fid_map (subject_id, fid, phone, package_id, flag_debt5000, flag_90_12, calculated_at)
values
<foreach collection="phoneFidMap" item="phoneFid" separator=",">
(#{phoneFid.subjectId}, #{phoneFid.fid}, #{phoneFid.phone}, #{phoneFid.packageId}, #{phoneFid.flagDebt5000},
#{phoneFid.flag90days}, #{phoneFid.calculatedAt})
</foreach>
</insert>
<!-- <insert id="registerJson" parameterType="string">-->
<!-- INSERT INTO signals_phone_fid_map-->
<!-- (subject_id, fid, phone, package_id, flag_debt5000, flag_90_12, calculated_at)-->
<!-- SELECT subject_id, fid, phone, package_id, flag_debt5000, flag_90_12, calculated_at-->
<!-- FROM json_to_recordset(#{json}::json) AS t(-->
<!-- subject_id varchar(255),-->
<!-- fid int,-->
<!-- phone text,-->
<!-- package_id bigint,-->
<!-- flag_debt5000 smallint,-->
<!-- flag_90_12 smallint,-->
<!-- calculated_at timestamp)-->
<!-- </insert>-->
<select id="registerJson" parameterType="string" resultType="long">
WITH src AS (SELECT row_number() OVER () AS rn,
subject_id,
phone,
package_id
FROM json_to_recordset(#{json}::json) AS t(
subject_id varchar(255),
phone text,
package_id bigint
))
INSERT
INTO signals_phone_fid_map
(subject_id, phone, package_id)
SELECT subject_id,
phone,
package_id
FROM src
ORDER BY rn
RETURNING id;
</select>
<update id="setFidJson" parameterType="string">
update signals_phone_fid_map dst
set fid = src.fid,
searched_at = now(),
error_text = null
FROM json_to_recordset(#{json}::json) AS src(
id bigint,
fid int
)
where dst.id = src.id;
</update>
<update id="setErrorJson" parameterType="string">
update signals_phone_fid_map dst
set error_text = src.error_text
FROM json_to_recordset(#{json}::json) AS src(
id bigint,
error_text text
)
where dst.id = src.id;
</update>
<delete id="deleteByPackageId" parameterType="long">
DELETE
FROM signals_phone_fid_map
WHERE package_id = #{packageId}
</delete>
<insert id="registerWithId" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO signals_phone_fid_map (subject_id, phone, package_id)
values
<foreach collection="phoneFidMap" item="phoneFid" separator=",">
(#{phoneFid.subjectId}, #{phoneFid.phone}, #{phoneFid.packageId})
</foreach>
</insert>
<update id="updatePhoneFidMaps" parameterType="java.util.List">
<foreach collection="subjects" item="subject" separator=";">
UPDATE signals_phone_fid_map
SET
package_id = #{subject.packageId},
subject_id = #{subject.subjectId},
phone = #{subject.phone},
fid = #{subject.fid},
flag_debt5000 = #{subject.flagDebt5000},
flag_90_12 = #{subject.flag90days},
calculated_at = #{subject.calculatedAt},
error_text = #{subject.errorText}
WHERE id = #{subject.id}
</foreach>
</update>
<update id="updateOne" parameterType="ru.nbch.credit_tracker.entities.app.PhoneFidMap">
UPDATE signals_phone_fid_map
SET package_id = #{subject.packageId},
subject_id = #{subject.subjectId},
phone = #{subject.phone},
fid = #{subject.fid2},
flag_debt5000 = #{subject.flagDebt5000},
flag_90_12 = #{subject.flag90days},
calculated_at = #{subject.calculatedAt},
error_text = #{subject.errorText}
WHERE id = #{subject.id}
</update>
<update id="updateFid" parameterType="java.util.List">
<foreach collection="subjects" item="subject" separator=";">
UPDATE signals_phone_fid_map
SET
fid = #{subject.fid}
WHERE rec_uuid = #{subject.id}
</foreach>
</update>
<update id="updatePhoneFidMapsErrors" parameterType="java.util.List">
<foreach collection="subjects" item="subject" separator=";">
UPDATE signals_phone_fid_map
SET
error_text = #{subject.errorText}
WHERE id = #{subject.recUuid}
</foreach>
</update>
<select id="findFullPhoneFidMap" resultMap="PhoneFidMapResultMap" resultType="java.util.List">
SELECT id,
package_id,
subject_id,
phone,
error_text
FROM signals_phone_fid_map
WHERE package_id = #{packageId}
ORDER BY id
LIMIT #{limit} OFFSET #{offset}
</select>
<select id="findNullFidPhoneFidMap" resultMap="PhoneFidMapResultMap" resultType="java.util.List">
SELECT id,
package_id,
subject_id,
phone,
error_text
FROM signals_phone_fid_map
WHERE package_id = #{packageId} and fid is null
ORDER BY id
LIMIT #{limit} OFFSET #{offset}
</select>
<select id="findNotNullFidPhoneFidMap" resultMap="PhoneFidMapResultMap" resultType="java.util.List">
SELECT id,
package_id,
subject_id,
phone,
fid,
error_text
FROM signals_phone_fid_map
WHERE package_id = #{packageId} and fid is not null
ORDER BY id
LIMIT #{limit} OFFSET #{offset}
</select>
<select id="pageByPackageIdAndOlderThanN" resultMap="PhoneFidMapResultMap" resultType="java.util.List">
SELECT id,
package_id,
subject_id,
phone,
error_text
FROM signals_phone_fid_map
WHERE package_id = #{packageId} and searched_at &lt; now() - make_interval(days => #{daysCount})
ORDER BY id
LIMIT #{limit} OFFSET #{offset}
</select>
<select id="pageByPackageIdAndNewerThanN" resultMap="PhoneFidMapResultMap" resultType="java.util.List">
SELECT id,
package_id,
subject_id,
phone,
fid,
error_text
FROM signals_phone_fid_map
WHERE package_id = #{packageId} and searched_at &gt;= now() - make_interval(days => #{daysCount})
ORDER BY id
LIMIT #{limit} OFFSET #{offset}
</select>
<select id="findPhoneFidMapById" resultMap="PhoneFidMapResultMap"
resultType="ru.nbch.credit_tracker.entities.app.PhoneFidMap">
SELECT id,
package_id,
subject_id,
phone,
fid,
flag_90_12,
flag_debt5000,
calculated_at,
error_text
FROM signals_phone_fid_map
WHERE id = #{id}
LIMIT 1
</select>
<select id="hasNonNullFids" resultType="java.lang.Boolean">
select count(*) > 0
from signals_phone_fid_map
where package_id = #{packageId}
AND fid is not null
</select>
<select id="hasOldRow" resultType="java.lang.Boolean">
select EXISTS(SELECT 1
FROM signals_phone_fid_map
WHERE package_id = #{packageId}
AND calculated_at &lt; now() - make_interval(days => #{daysCount})
)
</select>
</mapper>

View file

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="ru.nbch.credit_tracker.mapper.signal.PackagesRecordsMapper">
<resultMap id="PhoneFidMapResultMap" type="ru.nbch.credit_tracker.entities.app.PackagesRecordsMap">
<result property="id" column="id"/>
<result property="packageId" column="package_id"/>
<result property="subjectId" column="subject_id"/>
<result property="phone" column="phone"/>
<result property="errorText" column="error_text"/>
</resultMap>
<select id="registerJson" parameterType="string" resultType="long">
WITH src AS (SELECT row_number() OVER () AS rn,
fid,
phone,
name_1,
first,
middle,
birth_dt
FROM json_to_recordset(#{json}::json) AS t(
fid int,
phone bigint,
name_1 varchar(2000),
first varchar(2000),
middle varchar(2000),
birth_dt timestamp
))
INSERT
INTO signals_phones_map
(fid, phone, name_1, first, middle, birth_dt)
SELECT fid,
phone,
name_1,
first,
middle,
birth_dt
FROM src
ORDER BY rn
RETURNING id;
</select>
<update id="setFidJson" parameterType="string">
update signals_phones_map dst
set fid = src.fid,
searched_at = now()
FROM json_to_recordset(#{json}::json) AS src(
id bigint,
fid int
)
where dst.id = src.id;
</update>
<!-- <select id="pageByPackageIdAndOlderThanN" resultMap="PhoneFidMapResultMap" resultType="java.util.List">-->
<!-- SELECT id,-->
<!-- package_id,-->
<!-- subject_id,-->
<!-- phone,-->
<!-- error_text-->
<!-- FROM signals_phone_fid_map-->
<!-- WHERE package_id = #{packageId} and searched_at &lt; now() - make_interval(days => #{daysCount})-->
<!-- ORDER BY id-->
<!-- LIMIT #{limit} OFFSET #{offset}-->
<!-- </select>-->
<!-- <select id="pageByPackageIdAndNewerThanN" resultMap="PhoneFidMapResultMap" resultType="java.util.List">-->
<!-- SELECT id,-->
<!-- package_id,-->
<!-- subject_id,-->
<!-- phone,-->
<!-- fid,-->
<!-- error_text-->
<!-- FROM signals_phone_fid_map-->
<!-- WHERE package_id = #{packageId} and searched_at &gt;= now() - make_interval(days => #{daysCount})-->
<!-- ORDER BY id-->
<!-- LIMIT #{limit} OFFSET #{offset}-->
<!-- </select>-->
</mapper>

View file

@ -1,12 +1,12 @@
CREATE TABLE app_version (
CREATE TABLE app_version
(
DB_VERSION varchar(12)
);
alter table signals_user_packages
add LAST_SEARCHED_AT timestamp;
add LAST_SEARCHED_AT timestamp;
alter table signals_user_packages
add REJECT_STATUS varchar(255);
add REJECT_STATUS varchar(255);
alter table signals_phone_fid_map
add SEARCHED_AT timestamp;
@ -15,16 +15,43 @@ alter table signals_hits
add PHONE bigint;
CREATE TABLE signals_flags (
ID SERIAL PRIMARY KEY,
MAP_ID bigint,
SUBJECT_ID varchar(255),
PHONE varchar(255),
FID int,
CREATE TABLE signals_flags
(
ID SERIAL PRIMARY KEY,
MAP_ID bigint,
SUBJECT_ID varchar(255),
PHONE varchar(255),
FID int,
FLAG_DEBT5000 smallint,
FLAG_90_12 smallint,
FLAG_90_12 smallint,
CALCULATED_AT timestamp
);
ALTER TABLE signals_flags
ADD CONSTRAINT signals_flags_map_id_key UNIQUE(map_id);
CREATE TABLE signals_phones_map
(
ID SERIAL PRIMARY KEY,
FID int,
PHONE bigint,
NAME_1 varchar(255),
FIRST varchar(255),
MIDDLE varchar(255),
BIRTH_DT timestamp,
SER_NUM varchar(255),
ID_TYPE varchar(255),
FLAG_DEBT5000 smallint,
FLAG_90_12 smallint,
SEARCHED_AT timestamp,
CALCULATED_AT timestamp
);
ALTER TABLE signals_phones_map
ADD CONSTRAINT signals_phones_map_phone_key UNIQUE (PHONE);
alter table signals_phone_fid_map rename to signals_packages_records;
alter table signals_packages_records drop column fid;
alter table signals_packages_records drop column flag_debt5000;
alter table signals_packages_records drop column flag_90_12;
alter table signals_packages_records drop column calculated_at;
alter table signals_packages_records drop column rec_uuid;
alter table signals_packages_records drop column searched_at;
-- todo alter indexes and other constrains

View file

@ -10,7 +10,7 @@ import static org.mockito.ArgumentMatchers.any;
import org.mockito.Mock;
import static org.mockito.Mockito.when;
import org.mockito.junit.jupiter.MockitoExtension;
import ru.nbch.credit_tracker.entities.app.PhoneFidMap;
import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap;
import ru.nbch.credit_tracker.repository.PhoneRepository;
@ExtendWith(MockitoExtension.class)
@ -26,12 +26,12 @@ public class PhoneService2Test {
fidsDataWithEqualSinceDt.sort(byDbOrder);
when(phoneRepository.findFids(any())).thenReturn(fidsDataWithEqualSinceDt);
List<PhoneFidMap> phoneFidMap = new ArrayList<>();
phoneFidMap.add(PhoneFidMap.builder().phone("1111").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1112").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1113").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1114").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1115").build());
List<PackagesRecordsMap> phoneFidMap = new ArrayList<>();
phoneFidMap.add(PackagesRecordsMap.builder().phone("1111").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1112").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1113").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1114").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1115").build());
//todo
// Map<Integer, PhoneFidMap> res = phoneService.defineFidByPhone(phoneFidMap);
@ -49,12 +49,12 @@ public class PhoneService2Test {
fidsDataWithEqualSinceDt.sort(byDbOrder);
when(phoneRepository.findFids(any())).thenReturn(fidsDataWithEqualSinceDt2);
List<PhoneFidMap> phoneFidMap = new ArrayList<>();
phoneFidMap.add(PhoneFidMap.builder().phone("1111").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1112").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1113").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1114").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1115").build());
List<PackagesRecordsMap> phoneFidMap = new ArrayList<>();
phoneFidMap.add(PackagesRecordsMap.builder().phone("1111").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1112").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1113").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1114").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1115").build());
//todo
// Map<Integer, PhoneFidMap> res = phoneService.defineFidByPhone(phoneFidMap);
@ -71,12 +71,12 @@ public class PhoneService2Test {
fidsDataWithEqualSinceDt.sort(byDbOrder);
when(phoneRepository.findFids(any())).thenReturn(fidsDataWithEqualSinceDt3);
List<PhoneFidMap> phoneFidMap = new ArrayList<>();
phoneFidMap.add(PhoneFidMap.builder().phone("1111").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1112").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1113").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1114").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1115").build());
List<PackagesRecordsMap> phoneFidMap = new ArrayList<>();
phoneFidMap.add(PackagesRecordsMap.builder().phone("1111").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1112").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1113").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1114").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1115").build());
//todo
// Map<Integer, PhoneFidMap> res = phoneService.defineFidByPhone(phoneFidMap);
@ -125,12 +125,12 @@ public class PhoneService2Test {
// fidsDataWithNameEqualSinceDt.sort(byDbOrderWithName);
// when(phoneRepository.findFidsWithName(any())).thenReturn(fidsDataWithNameEqualSinceDt);
List<PhoneFidMap> phoneFidMap = new ArrayList<>();
phoneFidMap.add(PhoneFidMap.builder().phone("1111").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1112").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1113").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1114").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1115").build());
List<PackagesRecordsMap> phoneFidMap = new ArrayList<>();
phoneFidMap.add(PackagesRecordsMap.builder().phone("1111").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1112").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1113").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1114").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1115").build());
//todo
// Map<Integer, PhoneFidMap> res = phoneService.defineFidsAndNameByPhone(phoneFidMap);

View file

@ -10,7 +10,7 @@ import static org.mockito.ArgumentMatchers.any;
import org.mockito.Mock;
import static org.mockito.Mockito.when;
import org.mockito.junit.jupiter.MockitoExtension;
import ru.nbch.credit_tracker.entities.app.PhoneFidMap;
import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap;
import ru.nbch.credit_tracker.repository.PhoneRepository;
@ExtendWith(MockitoExtension.class)
@ -26,12 +26,12 @@ public class PhoneServiceTest {
fidsDataWithEqualSinceDt.sort(byDbOrder);
when(phoneRepository.findFidsLong(any())).thenReturn(fidsDataWithEqualSinceDt);
List<PhoneFidMap> phoneFidMap = new ArrayList<>();
phoneFidMap.add(PhoneFidMap.builder().phone("1111").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1112").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1113").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1114").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1115").build());
List<PackagesRecordsMap> phoneFidMap = new ArrayList<>();
phoneFidMap.add(PackagesRecordsMap.builder().phone("1111").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1112").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1113").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1114").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1115").build());
//todo
// Map<Integer, PhoneFidMap> res = phoneService.defineFidByPhone(phoneFidMap);
@ -49,12 +49,12 @@ public class PhoneServiceTest {
fidsDataWithEqualSinceDt.sort(byDbOrder);
when(phoneRepository.findFidsLong(any())).thenReturn(fidsDataWithEqualSinceDt2);
List<PhoneFidMap> phoneFidMap = new ArrayList<>();
phoneFidMap.add(PhoneFidMap.builder().phone("1111").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1112").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1113").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1114").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1115").build());
List<PackagesRecordsMap> phoneFidMap = new ArrayList<>();
phoneFidMap.add(PackagesRecordsMap.builder().phone("1111").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1112").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1113").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1114").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1115").build());
//todo
// Map<Integer, PhoneFidMap> res = phoneService.defineFidByPhone(phoneFidMap);
@ -71,12 +71,12 @@ public class PhoneServiceTest {
fidsDataWithEqualSinceDt.sort(byDbOrder);
when(phoneRepository.findFidsLong(any())).thenReturn(fidsDataWithEqualSinceDt3);
List<PhoneFidMap> phoneFidMap = new ArrayList<>();
phoneFidMap.add(PhoneFidMap.builder().phone("1111").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1112").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1113").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1114").build());
phoneFidMap.add(PhoneFidMap.builder().phone("1115").build());
List<PackagesRecordsMap> phoneFidMap = new ArrayList<>();
phoneFidMap.add(PackagesRecordsMap.builder().phone("1111").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1112").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1113").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1114").build());
phoneFidMap.add(PackagesRecordsMap.builder().phone("1115").build());
//todo
// Map<Integer, PhoneFidMap> res = phoneService.defineFidByPhone(phoneFidMap);

View file

@ -6,7 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import ru.nbch.credit_tracker.entities.app.PhoneFidMap;
import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap;
import ru.nbch.credit_tracker.entities.external_response.monitoring_report_error.MonitoringReportErrors;
import ru.nbch.credit_tracker.entities.external_response.online_download.Person;
import ru.nbch.credit_tracker.entities.external_response.online_download.Persons;
@ -156,12 +156,12 @@ public class StaxTest {
@Test
void testMonitoringReportErrors() {
List<PhoneFidMap> subjects = new ArrayList<>();
List<PackagesRecordsMap> subjects = new ArrayList<>();
staxXmlProcessor.read(getClass().getResourceAsStream("/monitoring_request/xml/report_errors.xml"), MonitoringReportErrors.class,
request -> {
if (!request.getPersons().isEmpty()) {
List<PhoneFidMap> batch = request.getPersons().stream().map(p -> {
return PhoneFidMap.builder()
List<PackagesRecordsMap> batch = request.getPersons().stream().map(p -> {
return PackagesRecordsMap.builder()
.id(p.getUid())
.errorText(p.getValue())
.build();