diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d5ed41ad5..3d3ae8284 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -17,7 +17,7 @@ preflight:
stage: preflight
script:
- pwd
- - git clone "http://gitlab-ci-token:$ACCESS_TOKEN@git.mfd.msk/mfd/clearing_test.git"
+ - git clone -b xml-files "http://gitlab-ci-token:$ACCESS_TOKEN@git.mfd.msk/mfd/clearing_test.git"
- find /builds/mfd/clearing/clearing_test -name ".gitkeep" -type f -delete
artifacts:
name: "$CI_COMMIT_REF_NAME"
diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.json b/clearing-parent/backend-api/src/main/resources/meta/meta.json
index ec7bc9cc8..3cb9ecd93 100644
--- a/clearing-parent/backend-api/src/main/resources/meta/meta.json
+++ b/clearing-parent/backend-api/src/main/resources/meta/meta.json
@@ -1,6 +1,6 @@
{
- "version": "3.23.295.169",
+ "version": "3.23.295.170",
"enums": {
@@ -11064,31 +11064,31 @@
}
,
{"code": "currencyPair",
- "name": "Код валютной пары","shortname": "Код валютной пары","type": 2,"length": 12
+ "name": "Код валютной пары","shortname": "Код валютной пары","type": 2,"length": 12,"visible": true
}
,
{"code": "currencyPairId",
- "name": "Идентификатор валютной пары","shortname": "Валютная пара","type": 1
+ "name": "Идентификатор валютной пары","shortname": "Валютная пара","type": 1,"visible": true
}
,
{"code": "settlementType",
- "name": "Код расчета","shortname": "Код расчета","type": 2,"length": 4
+ "name": "Код расчета","shortname": "Код расчета","type": 2,"length": 4,"visible": true
}
,
{"code": "value",
- "name": "Ставка","shortname": "Ставка","type": 10
+ "name": "Ставка","shortname": "Ставка","type": 10,"visible": true
}
,
{"code": "penaltyValue",
- "name": "Ставка переноса при нехватке валюты","shortname": "Ставка переноса при нехватке валюты","type": 10
+ "name": "Ставка переноса при нехватке валюты","shortname": "Ставка переноса при нехватке валюты","type": 10,"visible": true
}
,
{"code": "quoteValue",
- "name": "Ставка переноса при нехватке рублей","shortname": "Ставка переноса при нехватке рублей","type": 10
+ "name": "Ставка переноса при нехватке рублей","shortname": "Ставка переноса при нехватке рублей","type": 10,"visible": true
}
,
{"code": "workflowStatus",
- "name": "Статус","shortname": "Статус","type": 2,"length": 4,"link": "workflowStatus"
+ "name": "Статус","shortname": "Статус","type": 2,"length": 4,"link": "workflowStatus","visible": true
}
]
,"actions":[
@@ -11176,23 +11176,23 @@
}
,
{"code": "currencyId",
- "name": "Идентификатор валюты","shortname": "Валюта","type": 1
+ "name": "Идентификатор валюты","shortname": "Валюта","type": 1,"visible": true
}
,
{"code": "currency",
- "name": "Код валюты","shortname": "Код валюты","type": 2,"length": 4
+ "name": "Код валюты","shortname": "Код валюты","type": 2,"length": 4,"visible": true
}
,
{"code": "valueDate",
- "name": "Дата, на которую расчетный курс","shortname": "Дата","type": 6
+ "name": "Дата, на которую расчетный курс","shortname": "Дата","type": 6,"visible": true
}
,
{"code": "value",
- "name": "Расчетный курс","shortname": "Расчетный курс","type": 10
+ "name": "Расчетный курс","shortname": "Расчетный курс","type": 10,"visible": true
}
,
{"code": "workflowStatus",
- "name": "Статус","shortname": "Статус","type": 2,"length": 4,"link": "workflowStatus"
+ "name": "Статус","shortname": "Статус","type": 2,"length": 4,"link": "workflowStatus","visible": true
}
]
,"actions":[
diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.xml b/clearing-parent/backend-api/src/main/resources/meta/meta.xml
index 1742d743f..14dce0b3e 100644
--- a/clearing-parent/backend-api/src/main/resources/meta/meta.xml
+++ b/clearing-parent/backend-api/src/main/resources/meta/meta.xml
@@ -1,6 +1,6 @@
-
+
@@ -2564,13 +2564,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -2591,11 +2591,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/clearing-parent/db-scripts/src/main/resources/db/DICTIONARIES.sql b/clearing-parent/db-scripts/src/main/resources/db/DICTIONARIES.sql
index f3bbda9b0..68479fc09 100644
--- a/clearing-parent/db-scripts/src/main/resources/db/DICTIONARIES.sql
+++ b/clearing-parent/db-scripts/src/main/resources/db/DICTIONARIES.sql
@@ -1337,6 +1337,8 @@ INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (11003, 'DFLT', 'Доб
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (11004, 'DFLT', 'Изменение ДУК возможно только для балансирующих сделок ПЛ') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (11005, 'DFLT', 'Неверное значение параметра %s') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (11006, 'DFLT', 'Запись с кодом %s в справочнике %s не найдена.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (11007, 'DFLT', 'Не заданы обязательные поля.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
+INSERT INTO ERROR_CODE_DICTIONARY(ID, CODE, NAME) values (11008, 'DFLT', 'Недопустимая операция.') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO RESIDENCE_DICTIONARY(ID, CODE, NAME) values (1, 'RUS', 'Резидент РФ') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
INSERT INTO RESIDENCE_DICTIONARY(ID, CODE, NAME) values (2, 'XTRN', 'Нерезидент РФ') ON CONFLICT (ID) DO UPDATE SET CODE = EXCLUDED.CODE, NAME = EXCLUDED.NAME;
diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java
index 91590fd68..0a8e64a71 100644
--- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java
+++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/listener/TaskListener.java
@@ -6,6 +6,7 @@ import java.math.RoundingMode;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -40,6 +41,7 @@ import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.platform.enumeration.CurrencyCode;
import ru.spcex.platform.enumeration.ObjectType;
+import ru.spcex.platform.enumeration.OrderStatus;
import ru.spcex.platform.enumeration.OvernightType;
import ru.spcex.platform.enumeration.Priority;
import ru.spcex.platform.enumeration.Task;
@@ -53,6 +55,7 @@ public class TaskListener extends QueueConsumer implements InitializingBean {
protected final Logger log = LoggerFactory.getLogger(getClass());
private final ImdgQueryService imdgQueryService;
private final Imdg registryImdg;
+ private final Imdg orderCurrencyImdg;
private final SwapOvernightOrderService swapOvernightOrderService;
private final SpotOvernightOrderService spotOvernightOrderService;
private final OrderCurrencyTriExportService orderCurrencyTriExportService;
@@ -74,6 +77,7 @@ public class TaskListener extends QueueConsumer implements InitializingBean {
super(kafkaQueue, kafkaProducer);
this.imdgQueryService = imdgQueryService;
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
+ this.orderCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OrderCurrency, OrderCurrency.class);
this.swapOvernightOrderService = swapOvernightOrderService;
this.spotOvernightOrderService = spotOvernightOrderService;
this.orderCurrencyTriExportService = orderCurrencyTriExportService;
@@ -96,6 +100,14 @@ public class TaskListener extends QueueConsumer implements InitializingBean {
private void createOrder(BaseRequest newReq) {
log.info("CROR createOrder started, request={}", newReq);
+ Collection cretOrderIds = imdgQueryService.getCretOrderCurrency();
+ for (Long cretOrderId : cretOrderIds) {
+ OrderCurrency orderCurrency = orderCurrencyImdg.getSingleObjectByID(cretOrderId);
+ orderCurrency.setStatus(OrderStatus.REJECTED.getKey());
+ orderCurrency.setUpdated(Instant.now());
+ orderCurrencyImdg.update(orderCurrency);
+ }
+
Collection registryIds = imdgQueryService.getCurrencyRegistry();
//todo очередность создания
if (registryIds == null || registryIds.isEmpty()) {
diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/ImdgQueryService.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/ImdgQueryService.java
index e400d01ea..329fed658 100644
--- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/ImdgQueryService.java
+++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/ImdgQueryService.java
@@ -77,6 +77,13 @@ public class ImdgQueryService {
return registryImdg.getCollectionIdsByPredicate(registryPredicate);
}
+ public Collection getCretOrderCurrency() {
+ ImdgPredicateBuilder builder = orderCurrencyImdg.predicateBuilder();
+ return orderCurrencyImdg.getCollectionIdsByPredicate(
+ builder.equals("status", OrderStatus.CREATED.getKey())
+ );
+ }
+
public Collection getClccOrderCurrencyIds() {
ImdgPredicateBuilder builder = orderCurrencyImdg.predicateBuilder();
CompanyRoleSet companyRoleSet = companyRoleSetImdg.getFirstObjectByPredicate(
diff --git a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java
index e121a51c7..4066f2f0e 100644
--- a/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java
+++ b/clearing-parent/default-management/src/main/java/ru/spcex/clearing/dflt/management/service/OrderCalculationService.java
@@ -133,11 +133,10 @@ public class OrderCalculationService {
private BigDecimal swapPriceCalc(String baseCurrency, BigDecimal s, BigDecimal n, int precision) {
Rates rate = imdgQueryService.getRate(baseCurrency, LocalDate.now());
- BigDecimal p = BigDecimal.ONE.divide(n, MC);
- log.info("Calculation swap price: {}*{}*{}", s, n, p);
+ BigDecimal p = n.divide(BigDecimal.valueOf(365), MC);
+ log.info("Calculation swap price: {}*{}*{}", rate.getValue(), s, p);
return rate.getValue()
.multiply(s, MC)
- .multiply(n, MC)
.multiply(p, MC)
.setScale(precision, RoundingMode.HALF_UP);
}
diff --git a/clr_test/clearing-all/clearing_testing_utils/clearing-checker/dbf-swt-checker.jar b/clr_test/clearing-all/clearing_testing_utils/clearing-checker/dbf-swt-checker.jar
index 7a7a64060..61da34e50 100644
Binary files a/clr_test/clearing-all/clearing_testing_utils/clearing-checker/dbf-swt-checker.jar and b/clr_test/clearing-all/clearing_testing_utils/clearing-checker/dbf-swt-checker.jar differ
diff --git a/clr_test/clearing-all/clearing_testing_utils/clearing-converter/swt-dbf-converter.jar b/clr_test/clearing-all/clearing_testing_utils/clearing-converter/swt-dbf-converter.jar
index 1eb659e34..f5654e744 100644
Binary files a/clr_test/clearing-all/clearing_testing_utils/clearing-converter/swt-dbf-converter.jar and b/clr_test/clearing-all/clearing_testing_utils/clearing-converter/swt-dbf-converter.jar differ
diff --git a/clr_test/clearing-all/clearing_testing_utils/clearing-tester/clearing-tester.jar b/clr_test/clearing-all/clearing_testing_utils/clearing-tester/clearing-tester.jar
index 525503fbd..75cfd536c 100644
Binary files a/clr_test/clearing-all/clearing_testing_utils/clearing-tester/clearing-tester.jar and b/clr_test/clearing-all/clearing_testing_utils/clearing-tester/clearing-tester.jar differ
diff --git a/clr_test/clearing-all/kill_all.sh b/clr_test/clearing-all/kill_all.sh
index fbe1df543..d1e4609d2 100644
--- a/clr_test/clearing-all/kill_all.sh
+++ b/clr_test/clearing-all/kill_all.sh
@@ -7,8 +7,10 @@ kill -9 $(ps -ef | grep java | grep company-service.jar | awk '{print $2}')
kill -9 $(ps -ef | grep java | grep clearing-service.jar | awk '{print $2}')
kill -9 $(ps -ef | grep java | grep dbf-exporter.jar | awk '{print $2}')
kill -9 $(ps -ef | grep java | grep lim-exporter.jar | awk '{print $2}')
+kill -9 $(ps -ef | grep java | grep xml-exporter.jar | awk '{print $2}')
kill -9 $(ps -ef | grep java | grep swt-exporter.jar | awk '{print $2}')
kill -9 $(ps -ef | grep java | grep dbf-importer.jar | awk '{print $2}')
+kill -9 $(ps -ef | grep java | grep xml-importer.jar | awk '{print $2}')
kill -9 $(ps -ef | grep java | grep trade-importer.jar | awk '{print $2}')
kill -9 $(ps -ef | grep java | grep imdg.jar | awk '{print $2}')
kill -9 $(ps -ef | grep java | grep securities-service.jar | awk '{print $2}')
diff --git a/clr_test/clearing-all/launch_all.sh b/clr_test/clearing-all/launch_all.sh
index b6ec0f048..04075d010 100644
--- a/clr_test/clearing-all/launch_all.sh
+++ b/clr_test/clearing-all/launch_all.sh
@@ -15,10 +15,13 @@ java -jar $CLEARING_HOME/bin/account-service.jar --spring.config.location=$CLEAR
java -jar $CLEARING_HOME/bin/clearing-service.jar --spring.config.location=$CLEARING_HOME/settings/clearing-service/ &
java -jar $CLEARING_HOME/bin/scheduler-service.jar --spring.config.location=$CLEARING_HOME/settings/scheduler-service/ &
-java -jar $CLEARING_HOME/bin/dbf-exporter.jar --spring.config.location=$CLEARING_HOME/settings/dbf-exporter/ &
-java -jar $CLEARING_HOME/bin/dbf-importer.jar --spring.config.location=$CLEARING_HOME/settings/dbf-importer/ &
+#java -jar $CLEARING_HOME/bin/dbf-exporter.jar --spring.config.location=$CLEARING_HOME/settings/dbf-exporter/ &
+#java -jar $CLEARING_HOME/bin/dbf-importer.jar --spring.config.location=$CLEARING_HOME/settings/dbf-importer/ &
java -jar $CLEARING_HOME/bin/swt-exporter.jar --spring.config.location=$CLEARING_HOME/settings/swt-exporter/ &
java -jar $CLEARING_HOME/bin/swt-importer.jar --spring.config.location=$CLEARING_HOME/settings/swt-importer/ &
+java -jar $CLEARING_HOME/bin/xml-exporter.jar --spring.config.location=$CLEARING_HOME/settings/xml-exporter/ &
+java -jar $CLEARING_HOME/bin/xml-importer.jar --spring.config.location=$CLEARING_HOME/settings/xml-importer/ &
+
echo all services launched starting. $?
diff --git a/clr_test/clearing-all/settings/xml-exporter/application.properties b/clr_test/clearing-all/settings/xml-exporter/application.properties
new file mode 100644
index 000000000..97507d811
--- /dev/null
+++ b/clr_test/clearing-all/settings/xml-exporter/application.properties
@@ -0,0 +1,38 @@
+spring.main.web-application-type=none
+
+export-xml-service.hazelcast.cluster-members=localhost:5701
+export-xml-service.hazelcast.login=dev
+export-xml-service.hazelcast.password=dev-pass
+
+export-xml-service.common.encoding=cp866
+export-xml-service.common.threads-count=10
+
+export-xml-service.store.local-temp-dir=/opt/clearing/files/xml/exporter/
+
+export-xml-service.store.out-pay-val-dir.RUB=/out/prc/
+export-xml-service.store.out-pay-val-dir.EUR=/out/prc/
+export-xml-service.store.out-pay-val-dir.CNY=/out/prc/
+
+export-xml-service.store.user=user
+export-xml-service.store.password=Aa111111
+export-xml-service.store.server-ip=sftp
+export-xml-service.store.server-port=22
+
+export-xml-service.kafka-consumer.bootstrap-servers=kafka:9092
+export-xml-service.kafka-consumer.group-id=dev-group-balance-service
+export-xml-service.kafka-consumer.enable-auto-commit=false
+export-xml-service.kafka-consumer.session-timeout-ms=30000
+export-xml-service.kafka-consumer.auto-offset-reset=latest
+export-xml-service.kafka-consumer.linger-ms=1
+export-xml-service.kafka-consumer.buffer-memory=33554432
+
+export-xml-service.kafka-producer.bootstrap-servers=kafka:9092
+export-xml-service.kafka-producer.acks=all
+export-xml-service.kafka-producer.retries=0
+export-xml-service.kafka-producer.batch-size=16384
+export-xml-service.kafka-producer.linger-ms=1
+export-xml-service.kafka-producer.buffer-memory=33554432
+
+export-xml-service.section=S
+export-xml-service.sender=LCC
+export-xml-service.receiver=\u0422\u0435\u0441\u0442
diff --git a/clr_test/clearing-all/settings/xml-importer/application.properties b/clr_test/clearing-all/settings/xml-importer/application.properties
new file mode 100644
index 000000000..869450ee5
--- /dev/null
+++ b/clr_test/clearing-all/settings/xml-importer/application.properties
@@ -0,0 +1,44 @@
+spring.main.web-application-type=none
+
+import-xml-service.process-files=true
+import-xml-service.process-lks-files=false
+
+import-xml-service.scheduler.check-src-dir-cron=*/3 * * * * *
+
+import-xml-service.store.delete-src-files=false
+import-xml-service.store.src-dir=/opt/clearing/files/xml/importer/in
+import-xml-service.store.out-dir=/opt/clearing/files/xml/importer/out/
+import-xml-service.store.out-dir-error=/opt/clearing/files/xml/importer/error/
+
+import-xml-service.common.encoding-source=cp866
+import-xml-service.common.insert-batch-size=100
+import-xml-service.common.threads-count=10
+
+#sftpSrcDir
+import-xml-service.store.sftp-in.sftp-src-dir=/in/prc/
+import-xml-service.store.sftp-in.sftp-src-pay-val-dir.rub=/in/prc/
+import-xml-service.store.sftp-in.sftp-src-pay-val-dir.eur=/in/prc/
+
+import-xml-service.store.sftp-in.user=user
+import-xml-service.store.sftp-in.password=Aa111111
+import-xml-service.store.sftp-in.server-ip=sftp
+import-xml-service.store.sftp-in.server-port=22
+
+import-xml-service.hazelcast.cluster-members=localhost:5701
+import-xml-service.hazelcast.login=dev
+import-xml-service.hazelcast.password=dev-pass
+
+import-xml-service.kafka-producer.bootstrap-servers=kafka:9092
+import-xml-service.kafka-producer.acks=all
+import-xml-service.kafka-producer.retries=0
+import-xml-service.kafka-producer.batch-size=16384
+import-xml-service.kafka-producer.linger-ms=1
+import-xml-service.kafka-producer.buffer-memory=33554432
+
+import-xml-service.kafka-consumer.bootstrap-servers=kafka:9092
+import-xml-service.kafka-consumer.group-id=dev-group-clearing-service
+import-xml-service.kafka-consumer.enable-auto-commit=false
+import-xml-service.kafka-consumer.session-timeout-ms=30000
+import-xml-service.kafka-consumer.auto-offset-reset=latest
+import-xml-service.kafka-consumer.linger-ms=1
+import-xml-service.kafka-consumer.buffer-memory=33554432
\ No newline at end of file
diff --git a/clr_test/run_test_docker_containers.py b/clr_test/run_test_docker_containers.py
index 94477239c..b9f203eeb 100644
--- a/clr_test/run_test_docker_containers.py
+++ b/clr_test/run_test_docker_containers.py
@@ -10,7 +10,7 @@ logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(me
DATA_ROOT_DIR = os.environ['CLEARING_TEST_DIR']
CLR_TEST_DIR = os.environ['CLR_TEST_DIR']
RESULT_FILES_DIR = os.environ['RESULT_FILES_DIR']
-DDL_VERSION_FROM = (3, 18, 0)
+DDL_VERSION_FROM = (3, 23, 0)
def run_docker(folder_name: str) -> int:
@@ -103,7 +103,7 @@ def apply_test_case(folder: str) -> None:
copy_directory(f"{DATA_ROOT_DIR}/{folder}/data",
f"{CLR_TEST_DIR}/db/data")
- remove_files_with_extensions(".xml")
+ # remove_files_with_extensions(".xml")
# change_date(folder)
exit_code = run_docker(folder)
append_to_log_file(folder, exit_code)