clearing-service dbf-exporter S_DF03 S_DF11 для множества вариантов learing_member_category допустимо несколько отчётов на 1 фирму
This commit is contained in:
parent
c1de35e101
commit
ecab3cbee2
2 changed files with 23 additions and 20 deletions
|
|
@ -51,9 +51,9 @@ public class SdfCreatorBySTLDPayment {
|
||||||
Collection<PaymentInstruction> paymentInstructionFound = paymentImdgs.getCollectionObjectsByFieldValues(
|
Collection<PaymentInstruction> paymentInstructionFound = paymentImdgs.getCollectionObjectsByFieldValues(
|
||||||
Map.of("transactionStatus", TransactionStatus.stld.getKey()));
|
Map.of("transactionStatus", TransactionStatus.stld.getKey()));
|
||||||
log.info("Found {} PaymentInstruction by status {}", paymentInstructionFound.size(), TransactionStatus.stld.getKey());
|
log.info("Found {} PaymentInstruction by status {}", paymentInstructionFound.size(), TransactionStatus.stld.getKey());
|
||||||
Map<Long, PaymentBatchInfo> paymentBySender = paymentInstructionFound
|
List<AbstractMap.SimpleEntry<Long, PaymentBatchInfo>> paymentBySenderLst = new ArrayList<>();
|
||||||
.stream()
|
paymentInstructionFound.stream()
|
||||||
//группируем по компаниям (fixme sorted убрать?)
|
//группируем по компаниям
|
||||||
.sorted(Comparator.comparing(PaymentInstruction::getSenderId))
|
.sorted(Comparator.comparing(PaymentInstruction::getSenderId))
|
||||||
.collect(Collectors.groupingBy(PaymentInstruction::getSenderId))
|
.collect(Collectors.groupingBy(PaymentInstruction::getSenderId))
|
||||||
.entrySet()
|
.entrySet()
|
||||||
|
|
@ -61,24 +61,25 @@ public class SdfCreatorBySTLDPayment {
|
||||||
//результатом работы senderGroupSorter будет Map<senderId -> PaymentBatchInfo>
|
//результатом работы senderGroupSorter будет Map<senderId -> PaymentBatchInfo>
|
||||||
//PaymentBatchInfo содержит возможную ошибку, при необходимости отсортированные Payment
|
//PaymentBatchInfo содержит возможную ошибку, при необходимости отсортированные Payment
|
||||||
//тип ClearingMemberCategory
|
//тип ClearingMemberCategory
|
||||||
.map(entry -> {
|
.forEachOrdered(entry -> {
|
||||||
Long senderId = entry.getKey();
|
Long senderId = entry.getKey();
|
||||||
List<PaymentInstruction> pmtInstrcs = entry.getValue();
|
List<PaymentInstruction> pmtInstrcs = entry.getValue();
|
||||||
PaymentBatchInfo senderInfo = senderGroupSorter.sortCompanyPayments(generationId, senderId, pmtInstrcs);
|
List<PaymentBatchInfo> senderInfos = senderGroupSorter.sortCompanyPayments(generationId, senderId, pmtInstrcs);
|
||||||
if (senderInfo.getError() != null) {
|
for (PaymentBatchInfo senderInfo:senderInfos) {
|
||||||
anyError[0] = true;
|
if (senderInfo.getError() != null) {
|
||||||
|
anyError[0] = true;
|
||||||
|
}
|
||||||
|
paymentBySenderLst.add(new AbstractMap.SimpleEntry<>(senderId, senderInfo));
|
||||||
}
|
}
|
||||||
return new AbstractMap.SimpleEntry<>(senderId, senderInfo);
|
});
|
||||||
})
|
|
||||||
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
|
||||||
//save SDF03/SDF11
|
//save SDF03/SDF11
|
||||||
log.debug("Sending save {} sdf03/sdf11", paymentBySender.size());
|
log.debug("Sending save {} sdf03/sdf11", paymentBySenderLst.size());
|
||||||
for (var entry : paymentBySender.entrySet()) {
|
for (var entry : paymentBySenderLst) {
|
||||||
PaymentBatchInfo senderPayments = entry.getValue();
|
PaymentBatchInfo senderPayments = entry.getValue();
|
||||||
saveSdfAnSendToKafka(senderPayments, generationId);
|
saveSdfAnSendToKafka(senderPayments, generationId);
|
||||||
}
|
}
|
||||||
//update PaymentInstruction.transactionStatus
|
//update PaymentInstruction.transactionStatus
|
||||||
for (var entry : paymentBySender.entrySet()) {
|
for (var entry : paymentBySenderLst) {
|
||||||
PaymentBatchInfo batch = entry.getValue();
|
PaymentBatchInfo batch = entry.getValue();
|
||||||
//все PaymentInstruction.transactionStatus в batch с error != null
|
//все PaymentInstruction.transactionStatus в batch с error != null
|
||||||
//уже проапдейтились в методе sortCompanyPayments
|
//уже проапдейтились в методе sortCompanyPayments
|
||||||
|
|
|
||||||
|
|
@ -42,14 +42,15 @@ public class PaymentInstructionSorter {
|
||||||
this.messageResolver = messageResolver;
|
this.messageResolver = messageResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PaymentBatchInfo sortCompanyPayments(Long generationId, Long senderId, List<PaymentInstruction> payments) {
|
public List<PaymentBatchInfo> sortCompanyPayments(Long generationId, Long senderId, List<PaymentInstruction> payments) {
|
||||||
|
List<PaymentBatchInfo> result = new ArrayList<>(2);
|
||||||
log.info("processing PaymentInstruction's generationId={} senderId={} size={}", generationId, senderId, payments.size());
|
log.info("processing PaymentInstruction's generationId={} senderId={} size={}", generationId, senderId, payments.size());
|
||||||
Collection<ClearingMemberCategory> cmcList = clrngMmbrImdg.getCollectionObjectsByFieldValues(Map.of("companyId", senderId));
|
Collection<ClearingMemberCategory> cmcList = clrngMmbrImdg.getCollectionObjectsByFieldValues(Map.of("companyId", senderId));
|
||||||
Collection<ClearingMemberCategoryD> companyCategory = cmcList.stream()
|
Collection<ClearingMemberCategoryD> companyCategory = cmcList.stream()
|
||||||
.filter(cat -> cat.getClearingMemberCategory()!=null)
|
.filter(cat -> cat.getClearingMemberCategory() != null)
|
||||||
.map(cat -> IEnumKey.getEnumByKey(ClearingMemberCategoryD.class, cat.getClearingMemberCategory()))
|
.map(cat -> IEnumKey.getEnumByKey(ClearingMemberCategoryD.class, cat.getClearingMemberCategory()))
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
for (ClearingMemberCategoryD categoryValue: companyCategory) {
|
for (ClearingMemberCategoryD categoryValue : companyCategory) {
|
||||||
log.debug("For category {}", categoryValue);
|
log.debug("For category {}", categoryValue);
|
||||||
PaymentBatchInfo batchInfo = new PaymentBatchInfo();
|
PaymentBatchInfo batchInfo = new PaymentBatchInfo();
|
||||||
batchInfo.setCategoryD(categoryValue);
|
batchInfo.setCategoryD(categoryValue);
|
||||||
|
|
@ -111,21 +112,22 @@ public class PaymentInstructionSorter {
|
||||||
pmt.setTransactionStatus(TransactionStatus.cher.getKey());
|
pmt.setTransactionStatus(TransactionStatus.cher.getKey());
|
||||||
pmtInstrctnsImdg.update(pmt);
|
pmtInstrctnsImdg.update(pmt);
|
||||||
});
|
});
|
||||||
return batchInfo;
|
result.add(batchInfo);
|
||||||
} else {
|
} else {
|
||||||
batchInfo.setFromClearingToBank(aList);
|
batchInfo.setFromClearingToBank(aList);
|
||||||
batchInfo.setFromBankToClearing(bList);
|
batchInfo.setFromBankToClearing(bList);
|
||||||
return batchInfo;
|
result.add(batchInfo);
|
||||||
}
|
}
|
||||||
} else if (ClearingMemberCategoryD.B.equals(categoryValue)) {
|
} else if (ClearingMemberCategoryD.B.equals(categoryValue)) {
|
||||||
batchInfo.setInitialOrder(payments);
|
batchInfo.setInitialOrder(payments);
|
||||||
return batchInfo;
|
result.add(batchInfo);
|
||||||
} else {
|
} else {
|
||||||
log.debug("Do nothing as category {}, check next", categoryValue);
|
log.debug("Do nothing as category {}, check next", categoryValue);
|
||||||
// проверить следующую категорил, когда закончатся выдать ошибку
|
// проверить следующую категорил, когда закончатся выдать ошибку
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
throw new IllegalStateException("unknown clearing member category ["+companyCategory+"] for generationId="
|
log.warn("unknown clearing member category [" + companyCategory + "] for generationId="
|
||||||
+ generationId + " companyId=" + senderId + "");
|
+ generationId + " companyId=" + senderId + "");
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue