ialbert 2023-02-08 14:06:35 +03:00
parent 1c3e295a6b
commit 2178135bc8
2 changed files with 37 additions and 20 deletions

View file

@ -227,7 +227,7 @@ public class Clearing {
Optional<LiabilitiesClaimsMoney> lcmFirstLegFound = lbltsClmsMoneyCreator.searchLcmBySettlementDate(lcaFirstLeg.getAccountId(), lcaFirstLeg.getCompanyId(), lcaFirstLeg.getSettlementDate());
LiabilitiesClaimsMoney lcmFirstLeg = orElse(lcmFirstLegFound).ifPresentOrElse(lcm -> {
log.trace("LiabilitiesClaimsMoney first leg {} was found", lcm.getId());
lbltsClmsMoneyCreator.updateFirstLegLcm(lcm, lcaFirstLeg, category);
lbltsClmsMoneyCreator.updateFirstLegLcm(lcm, lcaFirstLeg, execDeposit, category);
liabilitiesClaimsMoneyImdg.update(lcm);
}, () -> {
LiabilitiesClaimsMoney lcm = lbltsClmsMoneyCreator.createFirstLegLcm(lcaFirstLeg, category);
@ -238,7 +238,7 @@ public class Clearing {
Optional<LiabilitiesClaimsMoney> lcmSecondLegFound = lbltsClmsMoneyCreator.searchLcmBySettlementDate(lcaSecondLeg.getAccountId(), lcaSecondLeg.getCompanyId(), lcaSecondLeg.getSettlementDate());
LiabilitiesClaimsMoney lcmSecondLeg = orElse(lcmSecondLegFound).ifPresentOrElse(lcm -> {
log.trace("LiabilitiesClaimsMoney second leg {} was found", lcm.getId());
lbltsClmsMoneyCreator.updateSecondLegLcm(lcm, lcaSecondLeg, category);
lbltsClmsMoneyCreator.updateSecondLegLcm(lcm, lcaSecondLeg, execDeposit, category);
liabilitiesClaimsMoneyImdg.update(lcm);
}, () -> {
LiabilitiesClaimsMoney lcm = lbltsClmsMoneyCreator.createSecondLegLcm(lcaSecondLeg, category);

View file

@ -3,6 +3,7 @@ package ru.spcex.clearing.service.builder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsMoney;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
@ -35,15 +36,23 @@ public class LiabilitiesClaimsMoneyCreator {
}
public void updateFirstLegLcm(LiabilitiesClaimsMoney liabilitiesClaimsMoney,
LiabilitiesClaimsAssets liabilitiesClaimsAssets, ClearingCategory category) {
BigDecimal prevLAmount = safeBD(liabilitiesClaimsMoney.getLiabilitiesAmount());
BigDecimal prevClaimsAmount = safeBD(liabilitiesClaimsMoney.getClaimsAmount());
BigDecimal lcaLiabilitiesQuantity = safeBD(liabilitiesClaimsAssets.getLiabilitiesQuantity());
BigDecimal lcaClaimsQuantity = safeBD(liabilitiesClaimsAssets.getClaimsQuantity());
log.trace("update first leg lcm {} by lca {}: prevLAmount={}, prevClaimsAmount={}, lcaLiabilitiesQuantity={}, lcaClaimsQuantity={}",
liabilitiesClaimsMoney.getId(), liabilitiesClaimsAssets.getId(), prevLAmount, prevClaimsAmount, lcaLiabilitiesQuantity, lcaClaimsQuantity);
liabilitiesClaimsMoney.setLiabilitiesAmount(prevLAmount.add(lcaLiabilitiesQuantity));
liabilitiesClaimsMoney.setClaimsAmount(prevClaimsAmount.add(lcaClaimsQuantity));
LiabilitiesClaimsAssets liabilitiesClaimsAssets, ExecutionDeposit execDeposit, ClearingCategory category) {
boolean catI = ClearingCategory.I.equals(category);
boolean catV = ClearingCategory.V.equals(category);
boolean catB = ClearingCategory.B.equals(category);
BigDecimal execFirstLegAmount = safeBD(execDeposit.getFirstLegAmount());
if (catI || catV) {
BigDecimal prevLAmount = safeBD(liabilitiesClaimsMoney.getLiabilitiesAmount());
log.trace("update first leg lcm {} by lca {}: prevLAmount={}, execFirstLegAmount={}",
liabilitiesClaimsMoney.getId(), liabilitiesClaimsAssets.getId(), prevLAmount, execFirstLegAmount);
liabilitiesClaimsMoney.setLiabilitiesAmount(prevLAmount.add(execFirstLegAmount));
}
if (catB) {
BigDecimal prevClaimsAmount = safeBD(liabilitiesClaimsMoney.getClaimsAmount());
log.trace("update first leg lcm {} by lca {}: prevClaimsAmount={}, execFirstLegAmount={}",
liabilitiesClaimsMoney.getId(), liabilitiesClaimsAssets.getId(), prevClaimsAmount, execFirstLegAmount);
liabilitiesClaimsMoney.setClaimsAmount(prevClaimsAmount.add(execFirstLegAmount));
}
}
@ -97,14 +106,22 @@ public class LiabilitiesClaimsMoneyCreator {
return lcm;
}
public void updateSecondLegLcm(LiabilitiesClaimsMoney lcm, LiabilitiesClaimsAssets lca, ClearingCategory category) {
BigDecimal prevLiabilitiesAmount = safeBD(lcm.getLiabilitiesAmount());
BigDecimal prevClaimsAmount = safeBD(lcm.getClaimsAmount());
BigDecimal lcaLiabilitiesQuantity = safeBD(lca.getLiabilitiesQuantity());
BigDecimal lcaClaimsQuantity = safeBD(lca.getClaimsQuantity());
log.trace("update second leg lcm {} by lca {}: prevLiabilitiesAmount={}, prevClaimsAmount={}, lcaLiabilitiesQuantity={}, lcaClaimsQuantity={}",
lcm.getId(), lca.getId(), prevLiabilitiesAmount, prevClaimsAmount, lcaLiabilitiesQuantity, lcaClaimsQuantity);
lcm.setLiabilitiesAmount(prevLiabilitiesAmount.add(lcaLiabilitiesQuantity));
lcm.setClaimsAmount(prevClaimsAmount.add(lcaClaimsQuantity));
public void updateSecondLegLcm(LiabilitiesClaimsMoney lcm, LiabilitiesClaimsAssets lca, ExecutionDeposit execDeposit, ClearingCategory category) {
boolean catI = ClearingCategory.I.equals(category);
boolean catV = ClearingCategory.V.equals(category);
boolean catB = ClearingCategory.B.equals(category);
BigDecimal execSecondLegAmount = safeBD(execDeposit.getSecondLegAmount());
if (catI || catV) {
BigDecimal prevClaimsAmount = safeBD(lcm.getClaimsAmount());
log.trace("update second leg lcm {} by lca {}: prevClaimsAmount={}, execSecondLegAmount={}",
lcm.getId(), lca.getId(), prevClaimsAmount, execSecondLegAmount);
lcm.setClaimsAmount(prevClaimsAmount.add(execSecondLegAmount));
}
if (catB) {
BigDecimal prevLiabilitiesAmount = safeBD(lcm.getLiabilitiesAmount());
log.trace("update second leg lcm {} by lca {}: prevLiabilitiesAmount={}, execSecondLegAmount={}",
lcm.getId(), lca.getId(), prevLiabilitiesAmount, execSecondLegAmount);
lcm.setLiabilitiesAmount(prevLiabilitiesAmount.add(execSecondLegAmount));
}
}
}