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 по ключу:
|
||||
//securityId И чтобы сделка была компании категории clearingMemberCategory.clearingMemberCategory ≠ той категории, сделка которой обрабатывается в настоящий момент.
|
||||
ExecutionDeposit matchedExecDeposit = executionDepositImdg.getSingleObjectBySQL(
|
||||
"securityId = " + execDeposit.getSecurityId()
|
||||
+ " AND companyId != " + execDeposit.getCompanyId());
|
||||
"exchangeExecutionId = " + execDeposit.getExchangeExecutionId()
|
||||
+ " AND side != '" + execDeposit.getSide() + "'");
|
||||
if (matchedExecDeposit != null) {
|
||||
matchedExecDeposit.setCoverageStatus(Allowed.DENIED.getKey());
|
||||
matchedExecDeposit.setUpdated(Instant.now());
|
||||
|
|
@ -251,7 +251,7 @@ public class Clearing {
|
|||
liabilitiesClaimsAssetsImdg.update(lcaSecondLeg);
|
||||
|
||||
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));
|
||||
liabilitiesClaimsAssetsImdg.update(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.utils.collection.Pair;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
import ru.spcex.platform.utils.text.TextUtil;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
|
|
@ -181,12 +182,9 @@ public class SdfCreatorBySTLDPayment {
|
|||
ClearingCategory getClearingCategory(PaymentInstruction paymentInstruction) {
|
||||
ClearingMemberCategory category = clearingMemberCategoryImdg.getSingleObjectByFieldValues(
|
||||
Map.of("companyId", paymentInstruction.getSenderId()));
|
||||
if (category == null) {
|
||||
log.error("ClearingMemberCategory not found by paymentInstruction[{}].companyId={}",
|
||||
paymentInstruction.getId(), paymentInstruction.getSenderId());
|
||||
return null;
|
||||
}
|
||||
String categoryKey = !TextUtil.isEmpty(category.getClearingMemberCategory())
|
||||
? category.getClearingMemberCategory() : "";
|
||||
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.payment.PaymentInstruction;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||
import ru.spcex.platform.enumeration.*;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgId;
|
||||
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 java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
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.stream.Collectors;
|
||||
|
||||
import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD;
|
||||
|
||||
|
|
@ -75,9 +74,9 @@ public class PaymentInstructionCreator {
|
|||
*
|
||||
* @return Созданные PaymentInstruction, может быть несколько. Они уже сохранены в IMDG.
|
||||
*/
|
||||
public List<PaymentInstruction> createAndSavePaymentInstructions(LiabilitiesClaimsAssets liabilitiesClaimsAssets,
|
||||
public List<PaymentInstruction> createAndSavePaymentInstructions(ExecutionDeposit executionDeposit, LiabilitiesClaimsAssets liabilitiesClaimsAssets,
|
||||
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.",
|
||||
newPaymentInstructions.size(), liabilitiesClaimsAssets.getId());
|
||||
for (PaymentInstruction instruction : newPaymentInstructions) {
|
||||
|
|
@ -89,11 +88,13 @@ public class PaymentInstructionCreator {
|
|||
/**
|
||||
* Создаёт и сохраняет
|
||||
*
|
||||
*
|
||||
* @param executionDeposit
|
||||
* @param liabilitiesClaimsAssets
|
||||
* @param clearingCategory
|
||||
* @return
|
||||
*/
|
||||
protected List<PaymentInstruction> createPaymentInstructions(LiabilitiesClaimsAssets liabilitiesClaimsAssets,
|
||||
protected List<PaymentInstruction> createPaymentInstructions(ExecutionDeposit executionDeposit, LiabilitiesClaimsAssets liabilitiesClaimsAssets,
|
||||
Collection<ClearingCategory> clearingCategory) {
|
||||
List<PaymentInstruction> newPaymentInstructions = new ArrayList<>();
|
||||
Instant now = Instant.now();
|
||||
|
|
@ -116,8 +117,8 @@ public class PaymentInstructionCreator {
|
|||
|
||||
payment1.setAddresseeId(SPVB_ID); // СПВБ
|
||||
{
|
||||
String sqlLCA = String.format("securityId = %s and companyId != %s",
|
||||
liabilitiesClaimsAssets.getSecurityId(), liabilitiesClaimsAssets.getCompanyId());
|
||||
String sqlLCA = String.format("exchangeExecutionId = %s and side != '%s'",
|
||||
executionDeposit.getExchangeExecutionId(), executionDeposit.getSide());
|
||||
ExecutionDeposit counterExecutionDeposit = executionDepositImdg.getSingleObjectBySQL(sqlLCA);
|
||||
if (counterExecutionDeposit == null) {
|
||||
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