diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/VerificationResultComponent.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/VerificationResultComponent.java index d408a675f..507a15f77 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/VerificationResultComponent.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/VerificationResultComponent.java @@ -118,11 +118,14 @@ public class VerificationResultComponent { for (VerificationResult rItem : result) { verificationResultImdg.insert(rItem); } + vResLst.addAll(result); } catch (Exception e) { log.error("Error verification for company {}: {}", companyId, ExceptionUtils.getStackTrace(e)); } } + boolean allSuccess = vResLst.stream().allMatch(vr -> ResultStatuses.success.equalsByKey(vr.getGenerationStatus())); + log.debug("Total {} VerificationResult created. {}", vResLst.size(), allSuccess ? "All success." : "Has same mismatch data."); } /** @@ -130,10 +133,13 @@ public class VerificationResultComponent { * @param accountId Account.id by Account.account * @return new */ - VerificationResult newVerification(Company forCompany, Long accountId) { + VerificationResult newVerification(Instant now, Company forCompany, Long accountId) { VerificationResult vResult = new VerificationResult(); vResult.setId(idGenerator.nextId()); // imdg - vResult.setCreated(Instant.now()); + if (now == null) { + now = Instant.now(); + } + vResult.setCreated(now); if (forCompany != null) { vResult.setClearingCode(forCompany.getClearingCode()); } @@ -146,7 +152,8 @@ public class VerificationResultComponent { protected List checkOnCompany(Company forCompany, Collection allSDf01, Collection allAccountBalance, Collection allAccount) { - ArrayList checks = new ArrayList<>(); + final ArrayList checks = new ArrayList<>(); + final Instant now = Instant.now(); Map indexAccountIdByAccount = new HashMap<>(); for (Account account : allAccount) { @@ -157,7 +164,7 @@ public class VerificationResultComponent { { // 1.70 verificationResult Map indexSDf01 = index(allSDf01, SDf01::getAccount); for (AccountBalance account : allAccountBalance) { - VerificationResult vResult = newVerification(forCompany, indexAccountIdByAccount.get(account.getAccount())); + VerificationResult vResult = newVerification(now, forCompany, indexAccountIdByAccount.get(account.getAccount())); checks.add(vResult); SDf01 document = indexSDf01.get(account.getAccount()); @@ -205,7 +212,7 @@ public class VerificationResultComponent { boolean isOk = sDf01Keys.size() == accountKeys.size() && sDf01Keys.containsAll(accountKeys) && accountKeys.containsAll(sDf01Keys); - VerificationResult vResult = newVerification(forCompany, null); + VerificationResult vResult = newVerification(now, forCompany, null); checks.add(vResult); if (isOk) { vResult.setResultStatus(ResultStatuses.success.getKey()); @@ -221,7 +228,7 @@ public class VerificationResultComponent { long countSDf01 = allSDf01.stream().filter(sDf01 -> sDf01.getDeal() != null).count(); long countAccount = allAccount.stream().filter(account -> account.getAccount() != null).count(); boolean isOk = countSDf01 == countAccount; - VerificationResult vResult = newVerification(forCompany, null); + VerificationResult vResult = newVerification(now, forCompany, null); checks.add(vResult); if (isOk) { vResult.setResultStatus(ResultStatuses.success.getKey()); @@ -281,7 +288,7 @@ public class VerificationResultComponent { fromSDf01 = fromSDf01.setScale(2, RoundingMode.HALF_UP); BigDecimal diff = fromBalance.subtract(fromSDf01).setScale(2, RoundingMode.HALF_UP).abs(); - VerificationResult vResult = newVerification(forCompany, indexAccountIdByAccount.get(account)); + VerificationResult vResult = newVerification(now, forCompany, indexAccountIdByAccount.get(account)); checks.add(vResult); if (BigDecimal.ZERO.compareTo(diff) == 0) { vResult.setResultStatus(ResultStatuses.success.getKey()); @@ -290,7 +297,7 @@ public class VerificationResultComponent { } vResult.setDiffSum(diff); vResult.setOutExtSum(fromSDf01); - log.trace("for comapny[{}], account \"{}\" summ of fromSDf01={}, of fromBalance={}; result {}", + log.trace("for company[{}], account \"{}\" summ of fromSDf01={}, of fromBalance={}; result {}", forCompany.getId(), account, fromSDf01, fromBalance, vResult.getResultStatus()); } } @@ -303,15 +310,6 @@ public class VerificationResultComponent { return checks; } - /* - Сумму по остаткам в бизнес-объекте accountBalance - sDf01.remainder = accountBalance.closeBalanceAmount [sDf01.account = accountBalance.account] - 2. Расчет контрольных сумм: - 2.1 Номера торговых/клиринговых счетов, соответствующие загруженным в КС -sDf01.deal = account.account & accountType=CLRN & accountStatus=UNBL - 2.2 Количество торговых/клиринговых счетов, соответствующие загруженным в КС - COUNT[sDf01.deal] = COUNT [account.account] - 2.3 Суммарный остаток по счетам - ∑sDf01.remainder = ∑accountBalance.closeBalanceAmount[sDf01.account = accountBalance.account] - 3. Сверка остатков по клиринговым счетам СПВБ в бизнес-объекте accountBalance - sDf01.remainder = accountBalance.closeBalanceAmount [sDf01.account = accountBalance.account & accountType=INFO] - */ - Map index(Collection from, Function indexFieldExtractor) { Map index = new HashMap<>(); diff --git a/clearing-parent/clearing-service/src/main/resources/logback.xml b/clearing-parent/clearing-service/src/main/resources/logback.xml new file mode 100644 index 000000000..f96f82942 --- /dev/null +++ b/clearing-parent/clearing-service/src/main/resources/logback.xml @@ -0,0 +1,37 @@ + + + + + UTF-8 + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + ./logs/clearing-service.log + + UTF-8 + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + ../logs/clearing-service.%i.log + + 1 + 10 + + + 500MB + + + + + + + + + + + + + \ No newline at end of file