From de627b9e56231a1eecbe03e66839e029bd4a7e35 Mon Sep 17 00:00:00 2001 From: etreshenkov Date: Tue, 1 Nov 2022 12:13:11 +0300 Subject: [PATCH] add executor config --- .../balance/config/SdfExecutorsConfig.java | 22 +++++++++ ...actExecutor.java => AbstractExecutor.java} | 2 +- .../balance/service/Sdf01Executor.java | 2 +- .../balance/service/StatementService.java | 46 +++++-------------- 4 files changed, 35 insertions(+), 37 deletions(-) create mode 100644 clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/SdfExecutorsConfig.java rename clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/{AbstactExecutor.java => AbstractExecutor.java} (82%) diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/SdfExecutorsConfig.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/SdfExecutorsConfig.java new file mode 100644 index 000000000..b36d68aa9 --- /dev/null +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/SdfExecutorsConfig.java @@ -0,0 +1,22 @@ +package ru.spcex.clearing.balance.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import ru.spcex.clearing.balance.service.AbstractExecutor; +import ru.spcex.clearing.balance.service.Sdf01Executor; +import ru.spcex.platform.classes.base.interfaces.WithAccount; +import ru.spcex.platform.enumeration.SdfTable; + +import java.util.HashMap; +import java.util.Map; + +@Configuration +public class SdfExecutorsConfig { + + @Bean("sdfExecutors") + public Map> executorsMap(Sdf01Executor sdf01Executor) { + Map> executors = new HashMap<>(); + executors.put(SdfTable.SDF_01, sdf01Executor); + return executors; + } +} diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AbstactExecutor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AbstractExecutor.java similarity index 82% rename from clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AbstactExecutor.java rename to clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AbstractExecutor.java index 94b12375e..6e21bc084 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AbstactExecutor.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AbstractExecutor.java @@ -5,6 +5,6 @@ import ru.spcex.platform.classes.base.interfaces.WithAccount; import java.util.Collection; -public abstract class AbstactExecutor { +public abstract class AbstractExecutor { abstract Result execute(Collection sdf, StatementRequest statementRequest); } diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf01Executor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf01Executor.java index 99f0bf1eb..144505434 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf01Executor.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf01Executor.java @@ -31,7 +31,7 @@ import java.util.Optional; import java.util.function.Function; @Service -public class Sdf01Executor extends AbstactExecutor { +public class Sdf01Executor extends AbstractExecutor { private final Logger log = LoggerFactory.getLogger(getClass()); private final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy"); diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java index 74ab80ffe..7266c1c46 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java @@ -7,10 +7,7 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; -import ru.clearing.classes.statics.data.account.AccountBalance; import ru.clearing.classes.statics.data.sdf.SDf01; -import ru.clearing.classes.statics.data.sdf.SDf02; -import ru.clearing.classes.statics.data.statement.Statement; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.Consts; @@ -24,14 +21,10 @@ import ru.spcex.platform.classes.base.interfaces.WithAccount; import ru.spcex.platform.enumeration.SdfTable; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; -import ru.spcex.platform.utils.enumeration.IMessageResolver; -import ru.spcex.platform.utils.validation.IValidator; import java.util.Collection; -import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.function.Function; import java.util.stream.Collectors; @Service @@ -40,34 +33,19 @@ public class StatementService extends QueueConsumer implements InitializingBean private final ImdgProvider imdgProvider; private final KafkaSender kafkaReqProducer; - private final LoggingService errorLogger; private final Imdg sdf01Imdg; - private final Imdg sdf02Imdg; - private final Imdg accountBalanceImdg; - private final Imdg statementImdg; - private final Function sDf01Validator; - private final AccountBalanceService accountBalanceService; - private final IMessageResolver errorResolver; - private final Map> executorsMap = new HashMap() {{ -// put(SdfTable.SDF_01, new Sdf01Executor()); - }}; + private final Map> executorsMap; @Autowired - public StatementService(Consumer kafkaQueue, ImdgProvider imdgProvider, KafkaSender kafkaReqProducer, LoggingService errorLogger, - @Qualifier("sdf01Validator") Function sDf01Validator, - AccountBalanceService accountBalanceService, - IMessageResolver errorResolver) { + public StatementService(Consumer kafkaQueue, + ImdgProvider imdgProvider, + KafkaSender kafkaReqProducer, + @Qualifier("sdfExecutors") Map> executorsMap) { super(kafkaQueue); this.imdgProvider = imdgProvider; this.sdf01Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf01, SDf01.class); - this.sdf02Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf02, SDf02.class); - this.accountBalanceService = accountBalanceService; - this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class); - this.accountBalanceImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class); this.kafkaReqProducer = kafkaReqProducer; - this.errorLogger = errorLogger; - this.sDf01Validator = sDf01Validator; - this.errorResolver = errorResolver; + this.executorsMap = executorsMap; } @Override @@ -80,13 +58,13 @@ public class StatementService extends QueueConsumer implements InitializingBean private void process(BaseRequest systemRequest) { StatementRequest statementRequest = systemRequest.getRequestPayload(); - Collection sdf01Group; + Collection sdfGroup; SdfTable table = statementRequest.getTable(); //map = getMapByTable(table) if (statementRequest.getAccountCreationResults().size() == 0) { - sdf01Group = sdf01Imdg.getCollectionObjectsByFieldValues(Map.of("generationId", statementRequest.getGroupId())); + sdfGroup = sdf01Imdg.getCollectionObjectsByFieldValues(Map.of("generationId", statementRequest.getGroupId())); } else { - sdf01Group = statementRequest.getAccountCreationResults() + sdfGroup = statementRequest.getAccountCreationResults() .stream() .filter(part -> part.getErrorCode() == null) //fixme эти случае должны попадать в ошибочный sdf02 .map(part -> sdf01Imdg.getSingleObjectByID(part.getSdfId())) @@ -96,10 +74,8 @@ public class StatementService extends QueueConsumer implements InitializingBean // .stream() // .sorted(Comparator.comparing(SpcexObjectBase::getId)) // .collect(Collectors.toList()); - //questions: делаем абстракцию или нет - AbstactExecutor service = executorsMap.get(table); - Result res = service.execute(sdf01Group, statementRequest); - + AbstractExecutor service = executorsMap.get(table); + Result res = service.execute(sdfGroup, statementRequest); if (res.getAccountRequests().size() == 0) { ExportToFileRequest exportRequest = new ExportToFileRequest(); exportRequest.setSdfGroupId(res.getGenerationId());