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.LoggerFactory;
|
||||
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 ru.clearing.classes.statics.data.misc.Currency;
|
||||
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.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.session.stage.ISessionStage;
|
||||
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.ImdgProvider;
|
||||
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.time.TimeUtil;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.Month;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.Collection;
|
||||
|
||||
import static ru.spcex.clearing.error.ClearingErrorInternal.SessionGeneralError;
|
||||
|
||||
@Service
|
||||
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class BalanceRevise implements ISessionStage {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
//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<Registry> registryImdg;
|
||||
private Imdg<Currency> currencyImdg;
|
||||
private Imdg<SDf56> sDf56Imdg;
|
||||
private KafkaSender kafkaSender;
|
||||
|
||||
@Autowired
|
||||
|
|
@ -49,6 +47,7 @@ public class BalanceRevise implements ISessionStage {
|
|||
this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
||||
this.currencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Currency, Currency.class);
|
||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
this.sDf56Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf56, SDf56.class);
|
||||
this.kafkaSender = kafkaSender;
|
||||
}
|
||||
|
||||
|
|
@ -70,20 +69,21 @@ public class BalanceRevise implements ISessionStage {
|
|||
private StageResult<?> sendSdfs() {
|
||||
Collection<Long> currencies = currencyImdg.projectSingleAttribute("id");
|
||||
Statement statement = statementImdg.aggregateByMax("created", StatementRevisePredicate.get(statementImdg, currencies));
|
||||
|
||||
Instant now = Instant.now();
|
||||
Sdf56And51Request sdf56Request = new Sdf56And51Request();
|
||||
sdf56Request.setDf56Number(idGenerator.nextId()); //fixme day scope id generator
|
||||
sdf56Request.setsDateTime(statement != null ?
|
||||
statement.getCreated() : TimeUtil.localDateToInstant(LocalDate.of(2023, Month.JANUARY, 1))); //fixme default sDate
|
||||
sdf56Request.seteDateTime(now);
|
||||
sdf56Request.setDf51Number(idGenerator.nextId()); //fixme day scope id generator
|
||||
sdf56Request.setDateTime(now);
|
||||
Long msgKey = kafkaSender.sendRequestToQueue(Consts.REVISE_PROCESS, sdf56Request);
|
||||
if (msgKey == null) {
|
||||
log.error("failed to put SDF56 request to kafka queue");
|
||||
return new StageResult<>(new EnumMessage(SessionGeneralError), false);
|
||||
}
|
||||
newSDf56(statement);
|
||||
//fixme теперь не отправляем команду в модуль dbf-export, он получит ее из другого места
|
||||
// Instant now = Instant.now();
|
||||
// Sdf56And51Request sdf56Request = new Sdf56And51Request();
|
||||
// sdf56Request.setDf56Number(idGenerator.nextId()); //fixme day scope id generator
|
||||
// sdf56Request.setsDateTime(statement != null ?
|
||||
// statement.getCreated() : TimeUtil.localDateToInstant(LocalDate.of(2023, Month.JANUARY, 1))); //fixme default sDate
|
||||
// sdf56Request.seteDateTime(now);
|
||||
// sdf56Request.setDf51Number(idGenerator.nextId()); //fixme day scope id generator
|
||||
// sdf56Request.setDateTime(now);
|
||||
// Long msgKey = kafkaSender.sendRequestToQueue(Consts.REVISE_PROCESS, sdf56Request);
|
||||
// if (msgKey == null) {
|
||||
// log.error("failed to put SDF56 request to kafka queue");
|
||||
// return new StageResult<>(new EnumMessage(SessionGeneralError), false);
|
||||
// }
|
||||
return new StageResult<>(null, true);
|
||||
}
|
||||
|
||||
|
|
@ -133,7 +133,9 @@ public class BalanceRevise implements ISessionStage {
|
|||
rgsAMT.setBalance(safeBD(rgsAMT.getBalance()).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())));
|
||||
registryImdg.update(rgsAMT);
|
||||
|
|
@ -171,4 +173,21 @@ public class BalanceRevise implements ISessionStage {
|
|||
private BigDecimal safeBD(BigDecimal value) {
|
||||
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