This commit is contained in:
parent
a9f9588258
commit
d87444dac1
23 changed files with 371 additions and 480 deletions
|
|
@ -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);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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 < 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 >= 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 < now() - make_interval(days => #{daysCount})
|
||||
)
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -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 < 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 >= now() - make_interval(days => #{daysCount})-->
|
||||
<!-- ORDER BY id-->
|
||||
<!-- LIMIT #{limit} OFFSET #{offset}-->
|
||||
<!-- </select>-->
|
||||
</mapper>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
CREATE TABLE app_version (
|
||||
CREATE TABLE app_version
|
||||
(
|
||||
DB_VERSION varchar(12)
|
||||
);
|
||||
|
||||
|
|
@ -15,7 +15,8 @@ alter table signals_hits
|
|||
add PHONE bigint;
|
||||
|
||||
|
||||
CREATE TABLE signals_flags (
|
||||
CREATE TABLE signals_flags
|
||||
(
|
||||
ID SERIAL PRIMARY KEY,
|
||||
MAP_ID bigint,
|
||||
SUBJECT_ID varchar(255),
|
||||
|
|
@ -26,5 +27,31 @@ CREATE TABLE signals_flags (
|
|||
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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue