create SDF56 by BalanceRevise
This commit is contained in:
parent
cd863f209a
commit
73c8cce9c2
1 changed files with 42 additions and 23 deletions
|
|
@ -3,13 +3,14 @@ package ru.spcex.clearing.session.stage.impl;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||||
|
import org.springframework.context.annotation.Scope;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.clearing.classes.statics.data.misc.Currency;
|
import ru.clearing.classes.statics.data.misc.Currency;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
|
import ru.clearing.classes.statics.data.sdf.SDf56;
|
||||||
import ru.clearing.classes.statics.data.statement.Statement;
|
import ru.clearing.classes.statics.data.statement.Statement;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.Sdf56And51Request;
|
|
||||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||||
import ru.spcex.clearing.session.stage.ISessionStage;
|
import ru.spcex.clearing.session.stage.ISessionStage;
|
||||||
import ru.spcex.clearing.session.stage.StageResult;
|
import ru.spcex.clearing.session.stage.StageResult;
|
||||||
|
|
@ -19,19 +20,15 @@ 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.imdg.api.predicate.specific.StatementRevisePredicate;
|
import ru.spcex.platform.imdg.api.predicate.specific.StatementRevisePredicate;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
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.temporal.ChronoUnit;
|
||||||
import java.time.Month;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
import static ru.spcex.clearing.error.ClearingErrorInternal.SessionGeneralError;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||||
public class BalanceRevise implements ISessionStage {
|
public class BalanceRevise implements ISessionStage {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
//todo remove (set all in single method setImdg(provider -> setImdg1();setIdGenerator();...)
|
//todo remove (set all in single method setImdg(provider -> setImdg1();setIdGenerator();...)
|
||||||
|
|
@ -40,6 +37,7 @@ public class BalanceRevise implements ISessionStage {
|
||||||
private Imdg<Statement> statementImdg;
|
private Imdg<Statement> statementImdg;
|
||||||
private Imdg<Registry> registryImdg;
|
private Imdg<Registry> registryImdg;
|
||||||
private Imdg<Currency> currencyImdg;
|
private Imdg<Currency> currencyImdg;
|
||||||
|
private Imdg<SDf56> sDf56Imdg;
|
||||||
private KafkaSender kafkaSender;
|
private KafkaSender kafkaSender;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|
@ -49,6 +47,7 @@ public class BalanceRevise implements ISessionStage {
|
||||||
this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
||||||
this.currencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Currency, Currency.class);
|
this.currencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Currency, Currency.class);
|
||||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||||
|
this.sDf56Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf56, SDf56.class);
|
||||||
this.kafkaSender = kafkaSender;
|
this.kafkaSender = kafkaSender;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -70,20 +69,21 @@ public class BalanceRevise implements ISessionStage {
|
||||||
private StageResult<?> sendSdfs() {
|
private StageResult<?> sendSdfs() {
|
||||||
Collection<Long> currencies = currencyImdg.projectSingleAttribute("id");
|
Collection<Long> currencies = currencyImdg.projectSingleAttribute("id");
|
||||||
Statement statement = statementImdg.aggregateByMax("created", StatementRevisePredicate.get(statementImdg, currencies));
|
Statement statement = statementImdg.aggregateByMax("created", StatementRevisePredicate.get(statementImdg, currencies));
|
||||||
|
newSDf56(statement);
|
||||||
Instant now = Instant.now();
|
//fixme теперь не отправляем команду в модуль dbf-export, он получит ее из другого места
|
||||||
Sdf56And51Request sdf56Request = new Sdf56And51Request();
|
// Instant now = Instant.now();
|
||||||
sdf56Request.setDf56Number(idGenerator.nextId()); //fixme day scope id generator
|
// Sdf56And51Request sdf56Request = new Sdf56And51Request();
|
||||||
sdf56Request.setsDateTime(statement != null ?
|
// sdf56Request.setDf56Number(idGenerator.nextId()); //fixme day scope id generator
|
||||||
statement.getCreated() : TimeUtil.localDateToInstant(LocalDate.of(2023, Month.JANUARY, 1))); //fixme default sDate
|
// sdf56Request.setsDateTime(statement != null ?
|
||||||
sdf56Request.seteDateTime(now);
|
// statement.getCreated() : TimeUtil.localDateToInstant(LocalDate.of(2023, Month.JANUARY, 1))); //fixme default sDate
|
||||||
sdf56Request.setDf51Number(idGenerator.nextId()); //fixme day scope id generator
|
// sdf56Request.seteDateTime(now);
|
||||||
sdf56Request.setDateTime(now);
|
// sdf56Request.setDf51Number(idGenerator.nextId()); //fixme day scope id generator
|
||||||
Long msgKey = kafkaSender.sendRequestToQueue(Consts.REVISE_PROCESS, sdf56Request);
|
// sdf56Request.setDateTime(now);
|
||||||
if (msgKey == null) {
|
// Long msgKey = kafkaSender.sendRequestToQueue(Consts.REVISE_PROCESS, sdf56Request);
|
||||||
log.error("failed to put SDF56 request to kafka queue");
|
// if (msgKey == null) {
|
||||||
return new StageResult<>(new EnumMessage(SessionGeneralError), false);
|
// log.error("failed to put SDF56 request to kafka queue");
|
||||||
}
|
// return new StageResult<>(new EnumMessage(SessionGeneralError), false);
|
||||||
|
// }
|
||||||
return new StageResult<>(null, true);
|
return new StageResult<>(null, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -133,7 +133,9 @@ public class BalanceRevise implements ISessionStage {
|
||||||
rgsAMT.setBalance(safeBD(rgsAMT.getBalance()).add(safeBD(stmt.getAmount())));
|
rgsAMT.setBalance(safeBD(rgsAMT.getBalance()).add(safeBD(stmt.getAmount())));
|
||||||
rgsAMT.setCredit(safeBD(rgsAMT.getCredit()).add(safeBD(stmt.getAmount())));
|
rgsAMT.setCredit(safeBD(rgsAMT.getCredit()).add(safeBD(stmt.getAmount())));
|
||||||
}
|
}
|
||||||
default -> {throw new IllegalStateException("null direction");}
|
default -> {
|
||||||
|
throw new IllegalStateException("null direction");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
rgsAMF.setBalance(safeBD(rgsAMT.getBalance()).subtract(safeBD(rgsAMB.getBalance())));
|
rgsAMF.setBalance(safeBD(rgsAMT.getBalance()).subtract(safeBD(rgsAMB.getBalance())));
|
||||||
registryImdg.update(rgsAMT);
|
registryImdg.update(rgsAMT);
|
||||||
|
|
@ -171,4 +173,21 @@ public class BalanceRevise implements ISessionStage {
|
||||||
private BigDecimal safeBD(BigDecimal value) {
|
private BigDecimal safeBD(BigDecimal value) {
|
||||||
return value != null ? value : BigDecimal.ZERO;
|
return value != null ? value : BigDecimal.ZERO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void newSDf56(Statement statement) {
|
||||||
|
log.debug("GALB request received; creating sdf56");
|
||||||
|
SDf56 sDf56 = new SDf56();
|
||||||
|
sDf56.setNumber(idGenerator.nextId().toString());
|
||||||
|
Instant now = Instant.now();
|
||||||
|
String startTime = String.valueOf(statement != null ?
|
||||||
|
statement.getCreated().toEpochMilli() : now.minus(1, ChronoUnit.DAYS).toEpochMilli());
|
||||||
|
sDf56.setStart_datetime(startTime);
|
||||||
|
sDf56.setEnd_datetime(String.valueOf(now.toEpochMilli()));
|
||||||
|
sDf56.setAccount("ТБС");
|
||||||
|
sDf56.setDeal("КОДУ");
|
||||||
|
sDf56.setGenerationTime(now);
|
||||||
|
sDf56.setGenerationId(idGenerator.nextId());
|
||||||
|
sDf56Imdg.insert(sDf56);
|
||||||
|
log.debug("successfully processed, new id {}", sDf56.getId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue