diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/SortingConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/SortingConfig.java new file mode 100644 index 000000000..b45a0085d --- /dev/null +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/SortingConfig.java @@ -0,0 +1,34 @@ +package ru.spcex.clearing.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import ru.clearing.classes.statics.data.generated.ClearingMemberCategory; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.platform.enumeration.ClearingCategory; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.utils.enumeration.IEnumKey; + +import java.util.Map; +import java.util.function.Function; + +@Configuration +public class SortingConfig { + private final Imdg clearingCategoryImdg; + + @Autowired + public SortingConfig(ImdgProvider imdgProvider) { + this.clearingCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); + } + + @Bean + public Function clearingMemberCategoryProvider() { + return companyId -> { + ClearingMemberCategory category = clearingCategoryImdg.getSingleObjectByFieldValues( + Map.of("companyId", companyId)); + return IEnumKey.getEnumByKey(ClearingCategory.class, + category.getClearingMemberCategory()); + }; + } +} diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Clearing.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Clearing.java new file mode 100644 index 000000000..90a4bf630 --- /dev/null +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Clearing.java @@ -0,0 +1,46 @@ +package ru.spcex.clearing.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import ru.clearing.classes.statics.data.execution.ExecutionDeposit; +import ru.clearing.classes.statics.data.generated.ClearingMemberCategory; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.service.order.ExecutionDepositSorter; +import ru.spcex.platform.enumeration.ClearingCategory; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; + +@Service +public class Clearing { + private final Imdg executionDepositImdg; + private final Imdg clearingCategoryImdg; + private final ExecutionDepositSorter sorter; + + @Autowired + public Clearing(ImdgProvider imdgProvider, ExecutionDepositSorter sorter) { + this.executionDepositImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class); + this.clearingCategoryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); + this.sorter = sorter; + } + + public void startClearing() { + //выгружаем ExecutionDeposit с пустым sessionId + Collection execDeposits = executionDepositImdg.getCollectionObjectsBySQL("sessionId = null"); + //делаем группировку ExecutionDeposit по категории и компании, делаем сортировку + LinkedHashMap>> executionDeposits = sorter.sortExecutionDeposit(execDeposits); + + executionDeposits.forEach((category, companies) -> { + for (List companyExecDeposits : companies) { + processSingleCompany(category, companyExecDeposits); + } + }); + } + + private void processSingleCompany(ClearingCategory category, List executionDeposits) { + + } +} diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ClearingService.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ClearingService.java index 58c25acfe..7213ef7f6 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ClearingService.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ClearingService.java @@ -5,7 +5,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import ru.spcex.platform.utils.log.ExceptionUtils; @@ -20,13 +19,15 @@ public class ClearingService implements DisposableBean { private final SdfCreatorBySTLDPayment sdfCreator; private final PaymentUpdateBySdf04 paymentUpdater; private final VerificationResultComponent verificationResultComponent; + private final Clearing clearing; @Autowired public ClearingService(SdfCreatorBySTLDPayment sdfCreator, PaymentUpdateBySdf04 paymentUpdater, - VerificationResultComponent verificationResultComponent) { + VerificationResultComponent verificationResultComponent, Clearing clearing) { this.sdfCreator = sdfCreator; this.paymentUpdater = paymentUpdater; this.verificationResultComponent = verificationResultComponent; + this.clearing = clearing; this.executor = Executors.newSingleThreadExecutor(); } @@ -69,4 +70,15 @@ public class ClearingService implements DisposableBean { log.debug("Shutdown {}", getClass().getSimpleName()); executor.shutdown(); } + + public void executeClearing() { + log.info("start clearing"); + executor.execute(() -> { + try { + clearing.startClearing(); + } catch (Throwable e) { + log.error("{}", ExceptionUtils.getStackTrace(e)); + } + }); + } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java index f7911379f..76e0aba39 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java @@ -31,6 +31,9 @@ public class EventsReceiver extends QueueConsumer implements InitializingBean { callback(LauncherCommandRequest.class) .setConsumer(event -> clearingService.executeVerification()) .forDestination(Task.getVerification.topic(), callbacks::put); + callback(Object.class) //todo check Object suitable + .setConsumer(event -> clearingService.executeClearing()) + .forDestination(Task.startOfClearing.topic(), callbacks::put); init(); } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ExecDepositWCategory.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ExecDepositWCategory.java new file mode 100644 index 000000000..91f745949 --- /dev/null +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ExecDepositWCategory.java @@ -0,0 +1,26 @@ +package ru.spcex.clearing.service; + +import ru.clearing.classes.statics.data.execution.ExecutionDeposit; +import ru.spcex.platform.enumeration.ClearingCategory; + +public class ExecDepositWCategory { + private final ExecutionDeposit executionDeposit; + private final ClearingCategory clearingMemberCategory; + + public ExecDepositWCategory(ExecutionDeposit executionDeposit, ClearingCategory clearingMemberCategory) { + this.executionDeposit = executionDeposit; + this.clearingMemberCategory = clearingMemberCategory; + } + + public ExecutionDeposit getExecutionDeposit() { + return executionDeposit; + } + + public ClearingCategory getClearingMemberCategory() { + return clearingMemberCategory; + } + + public Long getCompanyId() { + return executionDeposit.getCompanyId(); + } +} diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/ExecutionDepositSorter.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/ExecutionDepositSorter.java new file mode 100644 index 000000000..21178cd47 --- /dev/null +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/ExecutionDepositSorter.java @@ -0,0 +1,108 @@ +package ru.spcex.clearing.service.order; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.execution.ExecutionDeposit; +import ru.spcex.clearing.service.ExecDepositWCategory; +import ru.spcex.platform.enumeration.ClearingCategory; +import ru.spcex.platform.enumeration.MoneyFlowSide; +import ru.spcex.platform.utils.enumeration.IEnumKey; + +import java.util.*; +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Component +public class ExecutionDepositSorter { + private Function clearingMemberCategoryProvider; + + @Autowired + public void setClearingMemberCategoryProvider(Function clearingMemberCategoryProvider) { + this.clearingMemberCategoryProvider = clearingMemberCategoryProvider; + } + + public LinkedHashMap>> sortExecutionDeposit(CollectionexecDeposits) { + //отсортировали все записи по категориям + // → внутри каждой подгруппы по категориям сортируем по компаниям + // → обрабатываем почередно все записи первой компании + // → когда по первой компании записи закончились, начинаем обработавать все записи второй компании и так далее + // → когда по первой категории закончились записи для всех компаниий, + // начинаем аналогично обработавать все записи второй категории и так далее). + + //сортируем по категориям + Map> categoryGrouping = execDeposits.stream().map(executionDeposit -> { + ClearingCategory category = clearingMemberCategoryProvider.apply(executionDeposit.getCompanyId()); + return new ExecDepositWCategory(executionDeposit, category); + }).collect(Collectors.groupingBy(ExecDepositWCategory::getClearingMemberCategory)); + + //внутри категорий сортируем по компаниям + LinkedHashMap>> byCategoryByCompany = new LinkedHashMap<>(); + Consumer takeByClearingCategoryAnSortByCompaniId = clearingCategory -> { + List wrappers = categoryGrouping.remove(clearingCategory); + if (wrappers != null) { + List> batches = wrappers.stream() + .collect(Collectors.groupingBy(ExecDepositWCategory::getCompanyId)) + .entrySet() + .stream() + .sorted(Map.Entry.comparingByKey()) + .map(Map.Entry::getValue) + .toList(); + byCategoryByCompany.put(clearingCategory, batches); + } + }; + //кладем в порядке I, V, B + takeByClearingCategoryAnSortByCompaniId.accept(ClearingCategory.I); + takeByClearingCategoryAnSortByCompaniId.accept(ClearingCategory.V); + takeByClearingCategoryAnSortByCompaniId.accept(ClearingCategory.B); + //для всех остальных порядок не важен, будут последними + categoryGrouping.keySet().forEach(takeByClearingCategoryAnSortByCompaniId); + + //метод для дополнительной сортировки внутри групп по категории и компании + BiConsumer> additionalSorting = + (clearingCategory, comparator) -> byCategoryByCompany + .get(clearingCategory) + .forEach(singleCompanyBatch -> singleCompanyBatch.sort(comparator)); + //применяем дополнительные сортировки + //для V сначала Sell, потом Buy, в первую очередь должны обрабатываться новые сделки с наименьшими объемами + additionalSorting.accept(ClearingCategory.V, firstSellThenBuy + .thenComparing(wrapper -> wrapper.getExecutionDeposit().getFirstLegAmount())); + //для V сначала Buy, потом Sell, exchangeExecutionId - возрастающий + additionalSorting.accept(ClearingCategory.B, firstBuyThenSell + .thenComparing(wrapper -> wrapper.getExecutionDeposit().getExchangeExecutionId())); + return byCategoryByCompany; + } + + public static Comparator firstSellThenBuy = Comparator.comparing(wrapper -> { + MoneyFlowSide side = IEnumKey.getEnumByKey(MoneyFlowSide.class, wrapper.getExecutionDeposit().getSide()); + if (side == null) return Integer.MAX_VALUE; + switch (side) { + case BUY -> { + return 1; + } + case SELL -> { + return 0; + } + default -> { + return Integer.MAX_VALUE; + } + } + }); + + public static Comparator firstBuyThenSell = Comparator.comparing(wrapper -> { + MoneyFlowSide side = IEnumKey.getEnumByKey(MoneyFlowSide.class, wrapper.getExecutionDeposit().getSide()); + if (side == null) return Integer.MAX_VALUE; + switch (side) { + case BUY -> { + return 0; + } + case SELL -> { + return 1; + } + default -> { + return Integer.MAX_VALUE; + } + } + }); +} diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/PaymentBatchInfo.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/PaymentBatchInfo.java index 4f96a3856..fbf555bde 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/PaymentBatchInfo.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/PaymentBatchInfo.java @@ -1,7 +1,7 @@ package ru.spcex.clearing.service.order; import ru.clearing.classes.statics.data.payment.PaymentInstruction; -import ru.spcex.platform.enumeration.ClearingMemberCategoryD; +import ru.spcex.platform.enumeration.ClearingCategory; import ru.spcex.platform.utils.enumeration.EnumMessage; import java.util.Collection; @@ -13,13 +13,13 @@ public class PaymentBatchInfo { private List initialOrder; private List fromClearingToBank; private List fromBankToClearing; - private ClearingMemberCategoryD categoryD; + private ClearingCategory categoryD; private EnumMessage error; public Stream getOrderedPaymentInstructions() { Function, Stream> safeStream = paymentInstructions -> paymentInstructions != null ? paymentInstructions.stream() : Stream.empty(); - if (categoryD.equals(ClearingMemberCategoryD.B)) { + if (categoryD.equals(ClearingCategory.B)) { return safeStream.apply(initialOrder); } else { return Stream.concat(safeStream.apply(fromClearingToBank), safeStream.apply(fromBankToClearing)); @@ -43,11 +43,11 @@ public class PaymentBatchInfo { this.fromBankToClearing = fromBankToClearing; } - public ClearingMemberCategoryD getCategoryD() { + public ClearingCategory getCategoryD() { return categoryD; } - public void setCategoryD(ClearingMemberCategoryD categoryD) { + public void setCategoryD(ClearingCategory categoryD) { this.categoryD = categoryD; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/PaymentInstructionSorter.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/PaymentInstructionSorter.java index c898213d2..031bcf128 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/PaymentInstructionSorter.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/PaymentInstructionSorter.java @@ -10,7 +10,7 @@ import ru.clearing.classes.statics.data.payment.PaymentInstruction; import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.platform.enumeration.AccountType; -import ru.spcex.platform.enumeration.ClearingMemberCategoryD; +import ru.spcex.platform.enumeration.ClearingCategory; import ru.spcex.platform.enumeration.TransactionStatus; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -46,15 +46,15 @@ public class PaymentInstructionSorter { List result = new ArrayList<>(2); log.info("processing PaymentInstruction's generationId={} senderId={} size={}", generationId, senderId, payments.size()); Collection cmcList = clrngMmbrImdg.getCollectionObjectsByFieldValues(Map.of("companyId", senderId)); - Collection companyCategory = cmcList.stream() + Collection companyCategory = cmcList.stream() .filter(cat -> cat.getClearingMemberCategory() != null) - .map(cat -> IEnumKey.getEnumByKey(ClearingMemberCategoryD.class, cat.getClearingMemberCategory())) + .map(cat -> IEnumKey.getEnumByKey(ClearingCategory.class, cat.getClearingMemberCategory())) .collect(Collectors.toSet()); - for (ClearingMemberCategoryD categoryValue : companyCategory) { + for (ClearingCategory categoryValue : companyCategory) { log.debug("For category {}", categoryValue); PaymentBatchInfo batchInfo = new PaymentBatchInfo(); batchInfo.setCategoryD(categoryValue); - if (ClearingMemberCategoryD.I.equals(categoryValue)) { + if (ClearingCategory.I.equals(categoryValue)) { EnumMessage error = null; List aList = new ArrayList<>(); List bList = new ArrayList<>(); @@ -118,7 +118,7 @@ public class PaymentInstructionSorter { batchInfo.setFromBankToClearing(bList); result.add(batchInfo); } - } else if (ClearingMemberCategoryD.B.equals(categoryValue)) { + } else if (ClearingCategory.B.equals(categoryValue)) { batchInfo.setInitialOrder(payments); result.add(batchInfo); } else { diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_B.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_B.java index 4d3be05d8..1f3c7ae98 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_B.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_B.java @@ -4,7 +4,7 @@ import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.reports.ReportId; import ru.spcex.clearing.reports.reports.ReportWithPeriod; -import ru.spcex.platform.enumeration.ClearingMemberCategoryD; +import ru.spcex.platform.enumeration.ClearingCategory; import java.time.LocalDate; import java.time.LocalDateTime; @@ -31,7 +31,7 @@ public class ReportPA_B extends ReportWithPeriod { "Отчет по нетто-позиции участника клиринга в секции МКР (Уполномоченный банк)", startDate, endDate); - this.clearingMemberCategory = ClearingMemberCategoryD.B.getKey(); + this.clearingMemberCategory = ClearingCategory.B.getKey(); } @Override diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_IV.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_IV.java index 4d733ae0c..12d124dc7 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_IV.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_12_2/ReportPA_IV.java @@ -4,7 +4,7 @@ import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.reports.ReportId; import ru.spcex.clearing.reports.reports.ReportWithPeriod; -import ru.spcex.platform.enumeration.ClearingMemberCategoryD; +import ru.spcex.platform.enumeration.ClearingCategory; import java.time.LocalDate; import java.time.LocalDateTime; @@ -33,8 +33,8 @@ public class ReportPA_IV extends ReportWithPeriod { startDate, endDate); this.clearingMemberCategory = "%s,%s".formatted( - ClearingMemberCategoryD.I.getKey(), - ClearingMemberCategoryD.V.getKey() + ClearingCategory.I.getKey(), + ClearingCategory.V.getKey() ); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java index 70d706c99..67aafde5b 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/reports/bt_17_1/ReportBR_0420315_P1.java @@ -5,7 +5,7 @@ import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import ru.spcex.clearing.reports.reports.Destination; import ru.spcex.clearing.reports.reports.ReportId; import ru.spcex.clearing.reports.reports.ReportWithClearingStatus; -import ru.spcex.platform.enumeration.ClearingMemberCategoryD; +import ru.spcex.platform.enumeration.ClearingCategory; import ru.spcex.platform.enumeration.ClearingStatus; import java.time.LocalDate; @@ -37,8 +37,8 @@ public class ReportBR_0420315_P1 extends ReportWithClearingStatus { ClearingStatus.OK.getKey()); this.destination = Destination.BR.getKey(); this.clearingMemberCategory = "%s,%s".formatted( - ClearingMemberCategoryD.I.getKey(), - ClearingMemberCategoryD.V.getKey() + ClearingCategory.I.getKey(), + ClearingCategory.V.getKey() ); } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_B_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_B_Collector.java index a5b84606e..8f6fe2bc4 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_B_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_B_Collector.java @@ -6,7 +6,7 @@ import ru.clearing.classes.statics.data.liabilities.LiabilitiesClaimsAssets; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_B; import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; -import ru.spcex.platform.enumeration.ClearingMemberCategoryD; +import ru.spcex.platform.enumeration.ClearingCategory; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; @@ -41,7 +41,7 @@ public class ReportPA_B_Collector extends ReportWithPeriodCollector Collection clearingMemberCategories = clearingMemberCategoryImdg.getCollectionObjectsByFieldValues(Map.of( - "clearingMemberCategory", ClearingMemberCategoryD.B.getKey() + "clearingMemberCategory", ClearingCategory.B.getKey() )); Set companyIds = clearingMemberCategories.stream() .map(ClearingMemberCategory::getCompanyId) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_IV_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_IV_Collector.java index 627508028..c7bef06e6 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_IV_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_IV_Collector.java @@ -7,7 +7,7 @@ import ru.clearing.platform.dictionary.ClearingStatusDictionary; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.reports.reports.bt_12_2.ReportPA_IV; import ru.spcex.clearing.reports.services.ReportWithPeriodCollector; -import ru.spcex.platform.enumeration.ClearingMemberCategoryD; +import ru.spcex.platform.enumeration.ClearingCategory; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; @@ -45,7 +45,7 @@ public class ReportPA_IV_Collector extends ReportWithPeriodCollector clearingMemberCategories = clearingMemberCategoryImdg.getCollectionObjectsBySQL(clearingMemberCategorySql); diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingMemberCategoryD.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/MoneyFlowSide.java similarity index 64% rename from platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingMemberCategoryD.java rename to platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/MoneyFlowSide.java index 883769de0..1b1111295 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingMemberCategoryD.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/MoneyFlowSide.java @@ -2,12 +2,14 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; -public enum ClearingMemberCategoryD implements IEnumKey { - I("I"), V("V"), B("B"); +public enum MoneyFlowSide implements IEnumKey { + BUY("BUY"), + SELL("SELL"), + ; private final String key; - ClearingMemberCategoryD(String key) { + MoneyFlowSide(String key) { this.key = key; }