collect fids for procession flag calc
This commit is contained in:
parent
29b017c51c
commit
d136c30739
1 changed files with 19 additions and 6 deletions
|
|
@ -114,6 +114,7 @@ public class SignalService {
|
||||||
boolean noFidsFound = true;
|
boolean noFidsFound = true;
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
List<PhoneFidMap> batch;
|
List<PhoneFidMap> batch;
|
||||||
|
Map<Integer, PhoneFidMap> phonesByFidToProcessing = new HashMap<>();
|
||||||
do {
|
do {
|
||||||
batch = phoneFidMapService.findFullPhoneFidMap(packageId, offset, batchSize);
|
batch = phoneFidMapService.findFullPhoneFidMap(packageId, offset, batchSize);
|
||||||
|
|
||||||
|
|
@ -129,15 +130,28 @@ public class SignalService {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!filteredItems.isEmpty()) {
|
if (!filteredItems.isEmpty()) {
|
||||||
boolean fidsFound = updateFlags(filteredItems, packageId);
|
Map<Integer, PhoneFidMap> fidsMapByBatch = phoneService.defineFidByPhone(filteredItems);
|
||||||
if (noFidsFound) {
|
if (fidsMapByBatch.size() + phonesByFidToProcessing.size() < batchSize) {
|
||||||
noFidsFound = !fidsFound;
|
phonesByFidToProcessing.putAll(fidsMapByBatch);
|
||||||
|
} else {
|
||||||
|
boolean fidsFound = updateFlags(phonesByFidToProcessing, packageId);
|
||||||
|
if (noFidsFound) {
|
||||||
|
noFidsFound = !fidsFound;
|
||||||
|
}
|
||||||
|
phonesByFidToProcessing = new HashMap<>(fidsMapByBatch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
offset += batchSize;
|
offset += batchSize;
|
||||||
} while (!batch.isEmpty());
|
} while (!batch.isEmpty());
|
||||||
|
|
||||||
|
if (!phonesByFidToProcessing.isEmpty()) {
|
||||||
|
boolean fidsFound = updateFlags(phonesByFidToProcessing, packageId);
|
||||||
|
if (noFidsFound) {
|
||||||
|
noFidsFound = !fidsFound;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return new UpdateResult(updated, noFidsFound);
|
return new UpdateResult(updated, noFidsFound);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -146,9 +160,8 @@ public class SignalService {
|
||||||
* @return fidsFound true - если хотя бы по одному номеру был найден фид, false - в противном случае
|
* @return fidsFound true - если хотя бы по одному номеру был найден фид, false - в противном случае
|
||||||
*/
|
*/
|
||||||
// TODO Добавить отдельный метод. Если не нашелся фид, надо обновить в базе fid = null и флаги = null calculated_at=now()
|
// TODO Добавить отдельный метод. Если не нашелся фид, надо обновить в базе fid = null и флаги = null calculated_at=now()
|
||||||
public boolean updateFlags(List<PhoneFidMap> subjects, Integer packageId) {
|
public boolean updateFlags(Map<Integer, PhoneFidMap> fidsMap, Integer packageId) {
|
||||||
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<Integer, PhoneFidMap> fidsMap = phoneService.defineFidByPhone(subjects);
|
|
||||||
Map<Integer, FlagsService.FlagsData> flagsDataMap = flagsService.findFlags(fidsMap.keySet().stream().toList());
|
Map<Integer, FlagsService.FlagsData> flagsDataMap = flagsService.findFlags(fidsMap.keySet().stream().toList());
|
||||||
for (Map.Entry<Integer, FlagsService.FlagsData> entry : flagsDataMap.entrySet()) {
|
for (Map.Entry<Integer, FlagsService.FlagsData> entry : flagsDataMap.entrySet()) {
|
||||||
Integer fid = entry.getKey();
|
Integer fid = entry.getKey();
|
||||||
|
|
@ -162,7 +175,7 @@ public class SignalService {
|
||||||
|
|
||||||
phoneFidMapMapper.updatePhoneFid(phoneFidMap);
|
phoneFidMapMapper.updatePhoneFid(phoneFidMap);
|
||||||
}
|
}
|
||||||
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, fidsMap.size());
|
||||||
return !fidsMap.isEmpty();
|
return !fidsMap.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue