diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/BalanceRevise.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/BalanceRevise.java index 6095ab108..d962c1355 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/BalanceRevise.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/BalanceRevise.java @@ -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 statementImdg; private Imdg registryImdg; private Imdg currencyImdg; + private Imdg 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 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()); + } }