http://jira.mfd.msk:8088/browse/BKI-3186 Added changes for empty fids processing in monitoring setup step; Update version to 1.3
This commit is contained in:
parent
a29fe1e0f8
commit
ac82f57e23
9 changed files with 58 additions and 13 deletions
2
pom.xml
2
pom.xml
|
|
@ -10,7 +10,7 @@
|
||||||
</parent>
|
</parent>
|
||||||
<groupId>ru.nbch</groupId>
|
<groupId>ru.nbch</groupId>
|
||||||
<artifactId>credit-tracker</artifactId>
|
<artifactId>credit-tracker</artifactId>
|
||||||
<version>1.2</version>
|
<version>1.3</version>
|
||||||
<name>credit_tracker</name>
|
<name>credit_tracker</name>
|
||||||
<description>Credit Tracker Application</description>
|
<description>Credit Tracker Application</description>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -213,7 +213,12 @@ public class SignalFacade {
|
||||||
try {
|
try {
|
||||||
signalService.registerSubjects(filePath, packageId);
|
signalService.registerSubjects(filePath, packageId);
|
||||||
CTUtil.removeFile(filePath);
|
CTUtil.removeFile(filePath);
|
||||||
signalService.updateSubjects(packageId, null);
|
SignalService.UpdateResult updateResult = signalService.updateSubjects(packageId, null);
|
||||||
|
if (updateResult.isNoFidsFound()) {
|
||||||
|
log.info("No fids found for PackageId: {} PackageName: {}. Package status ON_MONITORING. No registration in signal service.", packageId, packageName);
|
||||||
|
signalService.updatePackageStatus(packageId, Status.ON_MONITORING);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (signalRestService.setupMonitoring(packageId, null)) {
|
if (signalRestService.setupMonitoring(packageId, null)) {
|
||||||
log.info("Package was successfully registered in signal service. PackageId: {} PackageName: {}", packageId, packageName);
|
log.info("Package was successfully registered in signal service. PackageId: {} PackageName: {}", packageId, packageName);
|
||||||
signalService.updatePackageStatus(packageId, Status.ON_MONITORING);
|
signalService.updatePackageStatus(packageId, Status.ON_MONITORING);
|
||||||
|
|
|
||||||
|
|
@ -17,4 +17,6 @@ public interface PhoneFidMapMapper {
|
||||||
void updatePhoneFidMaps(@Param("subjects") List<PhoneFidMap> subjects);
|
void updatePhoneFidMaps(@Param("subjects") List<PhoneFidMap> subjects);
|
||||||
|
|
||||||
PhoneFidMap findPhoneFidMapById(@Param("id") Integer packageId);
|
PhoneFidMap findPhoneFidMapById(@Param("id") Integer packageId);
|
||||||
|
|
||||||
|
boolean hasNonNullFids(@Param("packageId") Integer packageId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,10 @@ public class MonitoringService {
|
||||||
List<UserPackage> packages = signalService.findPackagesOnMonitoring();
|
List<UserPackage> packages = signalService.findPackagesOnMonitoring();
|
||||||
for (UserPackage userPackage : packages) {
|
for (UserPackage userPackage : packages) {
|
||||||
log.info("Processing package {}", userPackage.getPackageName());
|
log.info("Processing package {}", userPackage.getPackageName());
|
||||||
|
if (!signalService.hasNonNullfids(userPackage.getId())) {
|
||||||
|
log.info("Package {} has no fids. Package will be skipped.", userPackage.getPackageName());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
SgnlOnlineReport onlineReports = signalRestService.getReports(userPackage.getUserId().substring(0, 6) + "_" + userPackage.getPackageName());
|
SgnlOnlineReport onlineReports = signalRestService.getReports(userPackage.getUserId().substring(0, 6) + "_" + userPackage.getPackageName());
|
||||||
|
|
||||||
if (onlineReports == null) {
|
if (onlineReports == null) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package ru.nbch.credit_tracker.service;
|
package ru.nbch.credit_tracker.service;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.nbch.credit_tracker.builder.PersonFactoryBuilder;
|
import ru.nbch.credit_tracker.builder.PersonFactoryBuilder;
|
||||||
|
|
@ -97,8 +99,9 @@ public class SignalService {
|
||||||
/**
|
/**
|
||||||
* Обрабатывает все PhoneFidMap по packageId, выгружая их пачками и фильтруя по переданному фильтру
|
* Обрабатывает все PhoneFidMap по packageId, выгружая их пачками и фильтруя по переданному фильтру
|
||||||
*/
|
*/
|
||||||
public boolean updateSubjects(Integer packageId, Predicate<PhoneFidMap> filter) {
|
public UpdateResult updateSubjects(Integer packageId, Predicate<PhoneFidMap> filter) {
|
||||||
boolean updated = false;
|
boolean updated = false;
|
||||||
|
boolean noFidsFound = true;
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
List<PhoneFidMap> batch;
|
List<PhoneFidMap> batch;
|
||||||
do {
|
do {
|
||||||
|
|
@ -115,25 +118,28 @@ public class SignalService {
|
||||||
updated = true;
|
updated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateFlags(filteredItems, packageId);
|
if (!filteredItems.isEmpty()) {
|
||||||
|
boolean fidsFound = updateFlags(filteredItems, packageId);
|
||||||
|
if (noFidsFound) {
|
||||||
|
noFidsFound = !fidsFound;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
offset += batchSize;
|
offset += batchSize;
|
||||||
} while (!batch.isEmpty());
|
} while (!batch.isEmpty());
|
||||||
|
|
||||||
return updated;
|
return new UpdateResult(updated, noFidsFound);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Обрабатывает пачку PhoneFidMap: обновляет фиды и флаги просрочек
|
* Обрабатывает пачку PhoneFidMap: обновляет фиды и флаги просрочек
|
||||||
|
* @return fidsFound true - если хотя бы по одному номеру был найден фид, false - в противном случае
|
||||||
*/
|
*/
|
||||||
public void updateFlags(List<PhoneFidMap> subjects, Integer packageId) {
|
public boolean updateFlags(List<PhoneFidMap> subjects, Integer packageId) {
|
||||||
if (subjects.isEmpty()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
log.info("Start calculating fids and flags for subjects batch. PackageId: {}", packageId);
|
log.info("Start calculating fids and flags for subjects batch. PackageId: {}", packageId);
|
||||||
Map<String, Integer> fidsMap = phoneService.findFidsPhoneData(subjects);
|
Map<String, Integer> fidsMap = phoneService.findFidsPhoneData(subjects);
|
||||||
LocalDateTime calculatedAt = LocalDateTime.now();
|
LocalDateTime calculatedAt = LocalDateTime.now();
|
||||||
|
boolean fidsFound = fidsMap.values().stream().anyMatch(Objects::nonNull);
|
||||||
Map<Integer, FlagsService.FlagsData> flagsDataMap = flagsService.findFlags(fidsMap.values().stream().filter(Objects::nonNull).toList());
|
Map<Integer, FlagsService.FlagsData> flagsDataMap = flagsService.findFlags(fidsMap.values().stream().filter(Objects::nonNull).toList());
|
||||||
List<PhoneFidMap> subjectToUpdate = new ArrayList<>();
|
List<PhoneFidMap> subjectToUpdate = new ArrayList<>();
|
||||||
|
|
||||||
|
|
@ -171,6 +177,8 @@ public class SignalService {
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("Finish calculating fids and flags for subjects. PackageId: {}. Batch size: {}", packageId, subjects.size());
|
log.info("Finish calculating fids and flags for subjects. PackageId: {}. Batch size: {}", packageId, subjects.size());
|
||||||
|
|
||||||
|
return fidsFound;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void rejectPackage(MonitoringRequest request) {
|
public void rejectPackage(MonitoringRequest request) {
|
||||||
|
|
@ -299,4 +307,15 @@ public class SignalService {
|
||||||
public PhoneFidMap findPhoneFidMapById(Integer id) {
|
public PhoneFidMap findPhoneFidMapById(Integer id) {
|
||||||
return phoneFidMapService.findPhoneFidMapById(id);
|
return phoneFidMapService.findPhoneFidMapById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasNonNullfids(Integer packageId) {
|
||||||
|
return phoneFidMapService.hasNonNullfids(packageId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public static class UpdateResult {
|
||||||
|
private boolean updated;
|
||||||
|
private boolean noFidsFound;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,12 @@ public class UpdateProcessingPackagesService {
|
||||||
|
|
||||||
private void process(Integer packageId, String packageName) {
|
private void process(Integer packageId, String packageName) {
|
||||||
try {
|
try {
|
||||||
signalService.updateSubjects(packageId, null);
|
SignalService.UpdateResult updateResult = signalService.updateSubjects(packageId, null);
|
||||||
|
if (updateResult.isNoFidsFound()) {
|
||||||
|
log.info("No fids found for PackageId: {} PackageName: {}. Package status ON_MONITORING. No registration in signal service.", packageId, packageName);
|
||||||
|
signalService.updatePackageStatus(packageId, Status.ON_MONITORING);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (signalRestService.setupMonitoring(packageId, null)) {
|
if (signalRestService.setupMonitoring(packageId, null)) {
|
||||||
log.info("Package was successfully registered in signal service. PackageId: {} PackageName: {}", packageId, packageName);
|
log.info("Package was successfully registered in signal service. PackageId: {} PackageName: {}", packageId, packageName);
|
||||||
signalService.updatePackageStatus(packageId, Status.ON_MONITORING);
|
signalService.updatePackageStatus(packageId, Status.ON_MONITORING);
|
||||||
|
|
|
||||||
|
|
@ -58,8 +58,8 @@ public class UpdatingFlagsService {
|
||||||
try {
|
try {
|
||||||
signalService.updatePackageStatus(packageId, Status.PROCESSING);
|
signalService.updatePackageStatus(packageId, Status.PROCESSING);
|
||||||
Predicate<PhoneFidMap> filter = subject -> subject.getCalculatedAt() != null && hasDaysPassed(subject.getCalculatedAt());
|
Predicate<PhoneFidMap> filter = subject -> subject.getCalculatedAt() != null && hasDaysPassed(subject.getCalculatedAt());
|
||||||
boolean updated = signalService.updateSubjects(packageId, filter);
|
SignalService.UpdateResult updateResult = signalService.updateSubjects(packageId, filter);
|
||||||
if (updated) {
|
if (updateResult.isUpdated()) {
|
||||||
if (signalRestService.setupMonitoring(packageId, filter)) {
|
if (signalRestService.setupMonitoring(packageId, filter)) {
|
||||||
log.info("Flags were updated successfully. PackageId: {} PackageName: {}. Package status changed to ON_MONITORING", packageId, packageName);
|
log.info("Flags were updated successfully. PackageId: {} PackageName: {}. Package status changed to ON_MONITORING", packageId, packageName);
|
||||||
signalService.updatePackageStatus(packageId, Status.ON_MONITORING);
|
signalService.updatePackageStatus(packageId, Status.ON_MONITORING);
|
||||||
|
|
|
||||||
|
|
@ -31,4 +31,8 @@ public class PhoneFidMapService {
|
||||||
public PhoneFidMap findPhoneFidMapById(Integer id) {
|
public PhoneFidMap findPhoneFidMapById(Integer id) {
|
||||||
return mapper.findPhoneFidMapById(id);
|
return mapper.findPhoneFidMapById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasNonNullfids(Integer packageId) {
|
||||||
|
return mapper.hasNonNullFids(packageId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,5 +69,11 @@
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
</select>
|
</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>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
Loading…
Add table
Reference in a new issue