This commit is contained in:
parent
8a41f93e19
commit
13be0ab471
4 changed files with 38 additions and 19 deletions
|
|
@ -142,8 +142,8 @@ public class Clearing {
|
||||||
//также необходимо установить статус DEND встречной сделке контрагента этой компании, которая выбирается из executionDeposit по ключу:
|
//также необходимо установить статус DEND встречной сделке контрагента этой компании, которая выбирается из executionDeposit по ключу:
|
||||||
//securityId И чтобы сделка была компании категории clearingMemberCategory.clearingMemberCategory ≠ той категории, сделка которой обрабатывается в настоящий момент.
|
//securityId И чтобы сделка была компании категории clearingMemberCategory.clearingMemberCategory ≠ той категории, сделка которой обрабатывается в настоящий момент.
|
||||||
ExecutionDeposit matchedExecDeposit = executionDepositImdg.getSingleObjectBySQL(
|
ExecutionDeposit matchedExecDeposit = executionDepositImdg.getSingleObjectBySQL(
|
||||||
"securityId = " + execDeposit.getSecurityId()
|
"exchangeExecutionId = " + execDeposit.getExchangeExecutionId()
|
||||||
+ " AND companyId != " + execDeposit.getCompanyId());
|
+ " AND side != '" + execDeposit.getSide() + "'");
|
||||||
if (matchedExecDeposit != null) {
|
if (matchedExecDeposit != null) {
|
||||||
matchedExecDeposit.setCoverageStatus(Allowed.DENIED.getKey());
|
matchedExecDeposit.setCoverageStatus(Allowed.DENIED.getKey());
|
||||||
matchedExecDeposit.setUpdated(Instant.now());
|
matchedExecDeposit.setUpdated(Instant.now());
|
||||||
|
|
@ -251,7 +251,7 @@ public class Clearing {
|
||||||
liabilitiesClaimsAssetsImdg.update(lcaSecondLeg);
|
liabilitiesClaimsAssetsImdg.update(lcaSecondLeg);
|
||||||
|
|
||||||
log.trace("creating paymentInstructions");
|
log.trace("creating paymentInstructions");
|
||||||
List<PaymentInstruction> paymentInstructions = paymentInstructionCreator.createAndSavePaymentInstructions(lcaFirstLeg, Collections.singleton(category));
|
List<PaymentInstruction> paymentInstructions = paymentInstructionCreator.createAndSavePaymentInstructions(execDeposit, lcaFirstLeg, Collections.singleton(category));
|
||||||
paymentInstructionCreator.updateFieldLiabilitiesClaimsAssetsByPayment(lcaFirstLeg, lcmFirstLeg, paymentInstructions, Collections.singleton(category));
|
paymentInstructionCreator.updateFieldLiabilitiesClaimsAssetsByPayment(lcaFirstLeg, lcmFirstLeg, paymentInstructions, Collections.singleton(category));
|
||||||
liabilitiesClaimsAssetsImdg.update(lcaFirstLeg);
|
liabilitiesClaimsAssetsImdg.update(lcaFirstLeg);
|
||||||
log.trace("update first leg LiabilitiesClaimsMoney by payment: {}", lcaFirstLeg);
|
log.trace("update first leg LiabilitiesClaimsMoney by payment: {}", lcaFirstLeg);
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.utils.collection.Pair;
|
import ru.spcex.platform.utils.collection.Pair;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
import ru.spcex.platform.utils.text.TextUtil;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
@ -181,12 +182,9 @@ public class SdfCreatorBySTLDPayment {
|
||||||
ClearingCategory getClearingCategory(PaymentInstruction paymentInstruction) {
|
ClearingCategory getClearingCategory(PaymentInstruction paymentInstruction) {
|
||||||
ClearingMemberCategory category = clearingMemberCategoryImdg.getSingleObjectByFieldValues(
|
ClearingMemberCategory category = clearingMemberCategoryImdg.getSingleObjectByFieldValues(
|
||||||
Map.of("companyId", paymentInstruction.getSenderId()));
|
Map.of("companyId", paymentInstruction.getSenderId()));
|
||||||
if (category == null) {
|
String categoryKey = !TextUtil.isEmpty(category.getClearingMemberCategory())
|
||||||
log.error("ClearingMemberCategory not found by paymentInstruction[{}].companyId={}",
|
? category.getClearingMemberCategory() : "";
|
||||||
paymentInstruction.getId(), paymentInstruction.getSenderId());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return IEnumKey.getEnumByKeyOrUndefined(ClearingCategory.class,
|
return IEnumKey.getEnumByKeyOrUndefined(ClearingCategory.class,
|
||||||
category.getClearingMemberCategory());
|
categoryKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,22 +12,21 @@ import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets;
|
||||||
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsMoney;
|
import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsMoney;
|
||||||
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
|
||||||
import ru.spcex.platform.enumeration.*;
|
import ru.spcex.platform.enumeration.*;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgId;
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
|
||||||
import ru.spcex.platform.utils.number.BigDecimalUtil;
|
|
||||||
import ru.spcex.platform.utils.time.TimeUtil;
|
import ru.spcex.platform.utils.time.TimeUtil;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
|
import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
|
||||||
|
|
||||||
|
|
@ -75,9 +74,9 @@ public class PaymentInstructionCreator {
|
||||||
*
|
*
|
||||||
* @return Созданные PaymentInstruction, может быть несколько. Они уже сохранены в IMDG.
|
* @return Созданные PaymentInstruction, может быть несколько. Они уже сохранены в IMDG.
|
||||||
*/
|
*/
|
||||||
public List<PaymentInstruction> createAndSavePaymentInstructions(LiabilitiesClaimsAssets liabilitiesClaimsAssets,
|
public List<PaymentInstruction> createAndSavePaymentInstructions(ExecutionDeposit executionDeposit, LiabilitiesClaimsAssets liabilitiesClaimsAssets,
|
||||||
Collection<ClearingCategory> clearingCategory) {
|
Collection<ClearingCategory> clearingCategory) {
|
||||||
List<PaymentInstruction> newPaymentInstructions = createPaymentInstructions(liabilitiesClaimsAssets, clearingCategory);
|
List<PaymentInstruction> newPaymentInstructions = createPaymentInstructions(executionDeposit, liabilitiesClaimsAssets, clearingCategory);
|
||||||
log.trace("Created {} PaymentInstruction by LiabilitiesClaimsAssets[{}]. Do save ti IMDG.",
|
log.trace("Created {} PaymentInstruction by LiabilitiesClaimsAssets[{}]. Do save ti IMDG.",
|
||||||
newPaymentInstructions.size(), liabilitiesClaimsAssets.getId());
|
newPaymentInstructions.size(), liabilitiesClaimsAssets.getId());
|
||||||
for (PaymentInstruction instruction : newPaymentInstructions) {
|
for (PaymentInstruction instruction : newPaymentInstructions) {
|
||||||
|
|
@ -89,11 +88,13 @@ public class PaymentInstructionCreator {
|
||||||
/**
|
/**
|
||||||
* Создаёт и сохраняет
|
* Создаёт и сохраняет
|
||||||
*
|
*
|
||||||
|
*
|
||||||
|
* @param executionDeposit
|
||||||
* @param liabilitiesClaimsAssets
|
* @param liabilitiesClaimsAssets
|
||||||
* @param clearingCategory
|
* @param clearingCategory
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected List<PaymentInstruction> createPaymentInstructions(LiabilitiesClaimsAssets liabilitiesClaimsAssets,
|
protected List<PaymentInstruction> createPaymentInstructions(ExecutionDeposit executionDeposit, LiabilitiesClaimsAssets liabilitiesClaimsAssets,
|
||||||
Collection<ClearingCategory> clearingCategory) {
|
Collection<ClearingCategory> clearingCategory) {
|
||||||
List<PaymentInstruction> newPaymentInstructions = new ArrayList<>();
|
List<PaymentInstruction> newPaymentInstructions = new ArrayList<>();
|
||||||
Instant now = Instant.now();
|
Instant now = Instant.now();
|
||||||
|
|
@ -116,8 +117,8 @@ public class PaymentInstructionCreator {
|
||||||
|
|
||||||
payment1.setAddresseeId(SPVB_ID); // СПВБ
|
payment1.setAddresseeId(SPVB_ID); // СПВБ
|
||||||
{
|
{
|
||||||
String sqlLCA = String.format("securityId = %s and companyId != %s",
|
String sqlLCA = String.format("exchangeExecutionId = %s and side != '%s'",
|
||||||
liabilitiesClaimsAssets.getSecurityId(), liabilitiesClaimsAssets.getCompanyId());
|
executionDeposit.getExchangeExecutionId(), executionDeposit.getSide());
|
||||||
ExecutionDeposit counterExecutionDeposit = executionDepositImdg.getSingleObjectBySQL(sqlLCA);
|
ExecutionDeposit counterExecutionDeposit = executionDepositImdg.getSingleObjectBySQL(sqlLCA);
|
||||||
if (counterExecutionDeposit == null) {
|
if (counterExecutionDeposit == null) {
|
||||||
log.warn("Counter ExecutionDeposit not found for : {}", sqlLCA);
|
log.warn("Counter ExecutionDeposit not found for : {}", sqlLCA);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
package ru.spcex.platform.enumeration;
|
||||||
|
|
||||||
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
|
||||||
|
public enum Side implements IEnumKey {
|
||||||
|
BUY("B"),
|
||||||
|
SELL("S"),
|
||||||
|
;
|
||||||
|
|
||||||
|
private final String key;
|
||||||
|
|
||||||
|
Side(String key) {
|
||||||
|
this.key = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getKey() {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue