From e049752508b37febf67b8963874b7f44288f1aab Mon Sep 17 00:00:00 2001 From: psemenkov Date: Wed, 7 Jun 2023 16:02:13 +0300 Subject: [PATCH] =?UTF-8?q?http://jira.mfd.msk:8088/browse/CLS-321=20?= =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2=D0=B0=D0=BB=20?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=83=D0=B2=D0=B5=D0=B4=D0=BE=D0=BC=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9=20newInfoAccount=20=D0=B8=20newTradingCleari?= =?UTF-8?q?ngRegistry.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reports/notifications/DOCXService.java | 52 ++++++++- .../NCMPNotificationBuilder.java | 105 ++++++++++++++++++ .../NTCRNotificationBuilder.java | 96 ++++++++++++++++ .../notifications/NotificationBuilder.java | 41 ++++++- .../reports/services/NotificationService.java | 94 ++++++++++++++++ .../resources/templates/NCMP_TEMPLATE.docx | Bin 0 -> 47549 bytes .../resources/templates/NTCR_TEMPLATE.docx | Bin 0 -> 52772 bytes .../NCMPNotificationBuilderTest.java | 100 +++++++++++++++++ .../NTCRNotificationBuilderTest.java | 84 ++++++++++++++ .../reports/services/DOCXServiceTest.java | 59 ++++++++++ .../platform/messaging/domain/Consts.java | 2 + .../cud/reports/NotificationRequest.java | 6 +- 12 files changed, 633 insertions(+), 6 deletions(-) create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NCMPNotificationBuilder.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NTCRNotificationBuilder.java create mode 100644 clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/NotificationService.java create mode 100644 clearing-parent/reports-service/src/main/resources/templates/NCMP_TEMPLATE.docx create mode 100644 clearing-parent/reports-service/src/main/resources/templates/NTCR_TEMPLATE.docx create mode 100644 clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/notifications/NCMPNotificationBuilderTest.java create mode 100644 clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/notifications/NTCRNotificationBuilderTest.java diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/DOCXService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/DOCXService.java index 7bcd951f5..fc2a0861c 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/DOCXService.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/DOCXService.java @@ -204,7 +204,13 @@ public class DOCXService { * Сбор ключей из параграфа */ private void collectKeysFromParagraph(XWPFParagraph paragraph) { - for (XWPFRun run : paragraph.getRuns()) { + XWPFRun runForConcat = null; + int first = 0; + String concatText = ""; + boolean needConcat = false; + List runs = paragraph.getRuns(); + for (XWPFRun run : runs) { + boolean finded = false; try { int MAX_POSITION = 128; for (int currPos = 0; currPos < MAX_POSITION; currPos++) { @@ -212,9 +218,53 @@ public class DOCXService { if (currText == null) break; Matcher matcher = keyPattern.matcher(currText); while (matcher.find()) { + finded = true; String key = matcher.group(); keyPositions.add(new KeyPositionInDoc(key, run, currPos)); } + /** + * если ключ не нашли регуляркой но есть начало ключа "${" соберем ключ из фрагментов и отделим от текста + * например из фрагментов XWPFRun(учитывается только текст): + * [test , someText${, some, Key}/${ano, ther, Key}someText, test] + * получим [test , someText, ${someKey}, /, ${anotherKey}, someText, test] + */ + if (needConcat) { + concatText = concatText + currText; + if (currText.contains("}")) { + String[] strAr = new String[3]; + int start = concatText.indexOf("${"); + int end = concatText.indexOf("}") + 1; + strAr[0] = concatText.substring(0, start); + strAr[1] = concatText.substring(start, end); + strAr[2] = concatText.substring(end, concatText.length()); + + int last = runs.indexOf(run); + for (int i = first; i <= last; i++) { + if (i - first < 3) { + runs.get(i).setText(strAr[i - first], 0); + if (i - first == 1) { + keyPositions.add(new KeyPositionInDoc(runs.get(i).getText(0), runs.get(i), 0)); + } + } else { + runs.get(i).setText("", 0); + } + } + currText = strAr[2]; + if (currText.contains("${")) { + needConcat = true; + concatText = currText; + first = runs.indexOf(run); + } else { + needConcat = false; + concatText = ""; + first = 0; + } + } + } else if (currText.contains("${") && !finded) { + needConcat = true; + concatText = currText; + first = runs.indexOf(run); + } } } catch (IndexOutOfBoundsException ignored) { // can't get all max text position for XWPFRun diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NCMPNotificationBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NCMPNotificationBuilder.java new file mode 100644 index 000000000..d077634a0 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NCMPNotificationBuilder.java @@ -0,0 +1,105 @@ +package ru.spcex.clearing.reports.notifications; + +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.account.Account; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.company.CompanySymbols; +import ru.clearing.classes.statics.data.profile.ProfileDocument; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.io.File; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +@Component +public class NCMPNotificationBuilder extends NotificationBuilder { + private final Logger log = LoggerFactory.getLogger(getClass()); + private final Imdg companyImdg; + private final Imdg profileDocumentImdg; + private final Imdg accountImdg; + private final Imdg companySymbolsImdg; + + public NCMPNotificationBuilder(ImdgProvider imdgProvider) { + super(null); + this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + this.profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class); + this.accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class); + this.companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + } + + @Override + public File buildNotification(Long consumerId) { + Company company = companyImdg.getSingleObjectByID(consumerId); + if (company == null) { + log.error("Company for companyId={} is null", consumerId); + return null; + } + String companyClearingCode = company.getClearingCode(); + if (StringUtils.isBlank(companyClearingCode)) { + log.error("Company.clearing_code for companyId={} is null", consumerId); + return null; + } + + String profileDocumentSql = "companyId = %d AND documentType = CLRN".formatted(consumerId); + ProfileDocument profileDocument = null; + Collection profileDocuments = profileDocumentImdg.getCollectionObjectsBySQL(profileDocumentSql); + if (profileDocuments.size() >= 1) { + profileDocument = profileDocuments.iterator().next(); + } else { + log.warn("ProfileDocument with sql {} not found", profileDocumentSql); + return null; + } + + String companySymbolsValueINN = getCompanySymbolValue("companyId = %d AND companySymbol = INN".formatted(consumerId), companySymbolsImdg); + String companySymbolValueCLRC = getCompanySymbolValue("companyId = %d AND companySymbol = CLRC".formatted(consumerId), companySymbolsImdg); + String companySymbolValueRGRC = getCompanySymbolValue("companyId = %d AND companySymbol = RGRC".formatted(consumerId), companySymbolsImdg); + + String accountSql = "companyId = %d AND accountType = INFO".formatted(consumerId); + Account account = null; + Collection accounts = accountImdg.getCollectionObjectsBySQL(accountSql); + if (profileDocuments.size() >= 1) { + account = accounts.iterator().next(); + } else { + log.warn("Account with sql {} not found", accountSql); + return null; + } + + Map valuesForTemplate = new HashMap<>(); + + valuesForTemplate.put("${issDate}", profileDocument.getIssueDate().format(dateFormatter)); + valuesForTemplate.put("${date}", LocalDate.now().format(dateFormatterYYMMDD)); + valuesForTemplate.put("${profileDocumentNumber}", getNotNull(profileDocument.getNumber())); + valuesForTemplate.put("${companyFullName}", getNotNull(company.getFullName())); + valuesForTemplate.put("${companyShortName}", getNotNull(company.getShortName())); + valuesForTemplate.put("${companySymbolsValueINN}", companySymbolsValueINN); + valuesForTemplate.put("${companySymbolValueCLRC}", companySymbolValueCLRC); + valuesForTemplate.put("${companySymbolValueRGRC}", companySymbolValueRGRC); + valuesForTemplate.put("${accountINFO}", getNotNull(account.getAccount())); + + String outputFilename = "NCMP.%s.%s.docx".formatted(companyClearingCode, filenameDateTimeFormatter.format(LocalDateTime.now())); + + File outputFile = createOutFile(outputFilename); + try { + docxService.insertValues(outputFile, valuesForTemplate, true); + } catch (Exception e) { + log.error("Can't insert values into template.", e); + return null; + } + + return outputFile; + } + + @Override + protected String getTemplateResourceName() { + return "templates/NCMP_TEMPLATE.docx"; + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NTCRNotificationBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NTCRNotificationBuilder.java new file mode 100644 index 000000000..6a6aa5871 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NTCRNotificationBuilder.java @@ -0,0 +1,96 @@ +package ru.spcex.clearing.reports.notifications; + +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.company.CompanySymbols; +import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import java.io.File; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.HashMap; +import java.util.Map; + +@Component +public class NTCRNotificationBuilder extends NotificationBuilder { + private final Logger log = LoggerFactory.getLogger(getClass()); + private final Imdg companyImdg; + private final Imdg tradingClearingRegistryImdg; + private final Imdg companySymbolsImdg; + + public NTCRNotificationBuilder(ImdgProvider imdgProvider) { + super(null); + imdgProvider.waitAvailable(); + this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); + this.companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + } + + @Override + public File buildNotification(Long consumerId) { + TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryImdg.getSingleObjectByID(consumerId); + if (tradingClearingRegistry == null) { + log.error("TradingClearingRegistry for Id={} is null", consumerId); + return null; + } + Instant createdAt = tradingClearingRegistry.getCreated(); + if (createdAt == null) { + log.error("TradingClearingRegistry.created for id={} is null", consumerId); + return null; + } + + Company company = companyImdg.getSingleObjectByID(tradingClearingRegistry.getCompanyId()); + if (company == null) { + log.error("Company for companyId={} is null", consumerId); + return null; + } + + String companyClearingCode = company.getClearingCode(); + if (StringUtils.isBlank(companyClearingCode)) { + log.error("Company.clearing_code for companyId={} is null", consumerId); + return null; + } + + String companySymbolValueCLRC = getCompanySymbolValue("companyId = %d AND companySymbol = CLRC".formatted(consumerId), companySymbolsImdg); + + + Map valuesForTemplate = new HashMap<>(); + + valuesForTemplate.put("${createdAt}", dateFormatter.format(createdAt.atZone(ZoneId.systemDefault()).toLocalDate())); + valuesForTemplate.put("${date}", LocalDate.now().format(dateFormatterYYMMDD)); + valuesForTemplate.put("${TCRCode}", getNotNull(tradingClearingRegistry.getCode())); + valuesForTemplate.put("${companyFullName}", getNotNull(company.getFullName())); + valuesForTemplate.put("${companyShortName}", getNotNull(company.getShortName())); + valuesForTemplate.put("${companySymbolValueCLRC}", companySymbolValueCLRC); + valuesForTemplate.put("${TCRPurpose}", getNotNull(tradingClearingRegistry.getTradingClearingRegistryPurpose())); + valuesForTemplate.put("${TCRMoneyAccountId}", getNotNull(tradingClearingRegistry.getMoneyAccountId())); + valuesForTemplate.put("${TCRDepoAccountId}", getNotNull(tradingClearingRegistry.getDepoAccountId())); + + String outputFilename = "NTCR.%s.%s.docx".formatted(companyClearingCode, filenameDateTimeFormatter.format(LocalDateTime.now())); + outputFilename = normalizeFilenameForOS(outputFilename); + + File outputFile = createOutFile(outputFilename); + try { + docxService.insertValues(outputFile, valuesForTemplate, true); + } catch (Exception e) { + log.error("Can't insert values into template.", e); + return null; + } + + return outputFile; + } + + @Override + protected String getTemplateResourceName() { + return "templates/NTCR_TEMPLATE.docx"; + } + +} diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NotificationBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NotificationBuilder.java index 16053a381..9683f31f7 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NotificationBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NotificationBuilder.java @@ -2,21 +2,26 @@ package ru.spcex.clearing.reports.notifications; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.spcex.clearing.reports.exceptions.ConfigException; +import ru.spcex.platform.imdg.api.Imdg; import java.io.File; import java.net.URL; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.TextStyle; +import java.util.Collection; import java.util.Locale; import java.util.Map; public abstract class NotificationBuilder { protected final Logger log = LoggerFactory.getLogger(getClass()); - protected final DateTimeFormatter filenameDateTimeFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss"); + protected final DateTimeFormatter filenameDateTimeFormatter = DateTimeFormatter.ofPattern("YYMMDDHHmmssSSS"); protected final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); + protected final DateTimeFormatter dateFormatterYYMMDD = DateTimeFormatter.ofPattern("YYMMDD"); protected final DOCXService docxService; + protected File outFolder; protected NotificationBuilder(String keyPattern) { this.docxService = new DOCXService(); @@ -26,6 +31,12 @@ public abstract class NotificationBuilder { abstract public File buildNotification(Long consumerId); + public File buildNotification(Long consumerId, File outFolder) { + assert outFolder != null && outFolder.isDirectory(); + setOutFolder(outFolder); + return buildNotification(consumerId); + } + protected void fillHeaderValues(Map valuesMap, Long notificationId) { LocalDate notificationDate = LocalDate.now(); int day = notificationDate.getDayOfMonth(); @@ -48,7 +59,7 @@ public abstract class NotificationBuilder { resource = getClass().getClassLoader().getResource(templateResourceName); if (resource == null) throw new Exception(); } catch (Exception e) { - throw new ConfigException("Can't read template resource " + templateResourceName +" (URL \""+resource+"\")", e); + throw new ConfigException("Can't read template resource " + templateResourceName + " (URL \"" + resource + "\")", e); } log.info("Use resource: {}", resource); return resource; @@ -60,5 +71,31 @@ public abstract class NotificationBuilder { return filename; } + protected String getCompanySymbolValue(String companySymbolsSql, Imdg companySymbolsImdg) { + CompanySymbols companySymbols; + Collection companySymbolsCollection = companySymbolsImdg.getCollectionObjectsBySQL(companySymbolsSql); + if (companySymbolsCollection.size() >= 1) { + companySymbols = companySymbolsCollection.iterator().next(); + } else { +// log.warn("CompanySymbols with sql {} not found", companySymbolsSql); + return ""; + } + return companySymbols.getCompanySymbolValue(); + } + + protected String getNotNull(Object value) { + if (value == null) return ""; + return value.toString(); + } + abstract protected String getTemplateResourceName(); + + public File createOutFile(String outputFilename) { + if (outFolder != null && outFolder.isDirectory()) return new File(outFolder, outputFilename); + return new File(outputFilename); + } + + public void setOutFolder(File outFolder) { + this.outFolder = outFolder; + } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/NotificationService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/NotificationService.java new file mode 100644 index 000000000..64ef52bc0 --- /dev/null +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/NotificationService.java @@ -0,0 +1,94 @@ +package ru.spcex.clearing.reports.services; + +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.producer.Producer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.stereotype.Service; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.reports.NotificationRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; +import ru.spcex.clearing.reports.config.element.ReportsServiceSettings; +import ru.spcex.clearing.reports.notifications.NCMPNotificationBuilder; +import ru.spcex.clearing.util.security.UserRoleVerification; + +import java.io.File; +import java.util.Map; + +@Service +public class NotificationService extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + private final UserRoleVerification userRoleVerification; + private final NCMPNotificationBuilder ncmpNotificationBuilder; + + private final File outFolder; + + public NotificationService(Consumer kafkaQueue, + Producer kafkaResponseQueue, + UserRoleVerification userRoleVerification, + NCMPNotificationBuilder ncmpNotificationBuilder, + ReportsServiceSettings reportsServiceSettings) { + super(kafkaQueue, kafkaResponseQueue); + this.userRoleVerification = userRoleVerification; + this.ncmpNotificationBuilder = ncmpNotificationBuilder; + this.outFolder = new File(reportsServiceSettings.getReportModuleOut()); + assert outFolder.isDirectory(); + } + + @Override + public void afterPropertiesSet() throws Exception { + callback(NotificationRequest.class) + .setFunction(this::createNotificationNCMP) + .forDestination(Consts.CREATE_NOTIFICATION_NCMP, callbacks::put); + callback(NotificationRequest.class) + .setFunction(this::createNotificationNTCR) + .forDestination(Consts.CREATE_NOTIFICATION_NTCR, callbacks::put); + init(); + } + + public RequestInfoUpdate createNotificationNCMP(BaseRequest userRequest) { + log.debug("NotificationRequest NCMP received"); + RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); + if (requestInfoUpdate != null) return null; + + NotificationRequest req = userRequest.getRequestPayload(); + + logUnknownProperties(userRequest); + + File outFile = ncmpNotificationBuilder.buildNotification(req.getConsumerId(), outFolder); + if (outFile == null) { + log.error("Create notification NCMP for id={} failed, see log", req.getConsumerId()); + } else { + log.debug("Notification NCMP for id={} successfully created. Output files: {}", req.getConsumerId(), outFile); + } + return null; + } + + public RequestInfoUpdate createNotificationNTCR(BaseRequest userRequest) { + log.debug("NotificationRequest NTCR received"); + RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); + if (requestInfoUpdate != null) return null; + + NotificationRequest req = userRequest.getRequestPayload(); + + logUnknownProperties(userRequest); + + File outFile = ncmpNotificationBuilder.buildNotification(req.getConsumerId(), outFolder); + if (outFile == null) { + log.error("Create notification NTCR for id={} failed, see log", req.getConsumerId()); + } else { + log.debug("Notification NTCR for id={} successfully created. Output files: {}", req.getConsumerId(), outFile); + } + return null; + } + + private void logUnknownProperties(BaseRequest request) { + Map unknownProperties = request.getUnknownProperties(); + for (Map.Entry unknownProperty : unknownProperties.entrySet()) { + log.warn("Unknown property in request {} = {}", unknownProperty.getKey(), unknownProperty.getValue()); + } + } +} diff --git a/clearing-parent/reports-service/src/main/resources/templates/NCMP_TEMPLATE.docx b/clearing-parent/reports-service/src/main/resources/templates/NCMP_TEMPLATE.docx new file mode 100644 index 0000000000000000000000000000000000000000..4b3980fcd7f6c1a02b34cbd60c37d494ac322ed9 GIT binary patch literal 47549 zcmeFYV~{0Lv@UqcuIjRFtIM`+yQ<5!(Pi80vTeJ|wryKeec#+SZ)R@9M9klJGa`4M zlbL5n?zKOx%v?ua3Ir4d01kiz004vl^L{GRKp+5M6&wIS20#L93EA2>nb3Sz8h0g920J0)W5I|L^60;|Me)jal?F{1AEi{TVpZv@F?1Q8+M~A7g_3>lG;c zXOoDvgm}WzmMacdUJwbLOb6pK^V23VT%=fnvx=zHwSZPaodJ_RB8GVqtNY(BQ`;Nj z2w>;}VRN`YRv`W|L(OajD?@rC$nO=h#-9U zFu3i^;R1RwED>1oI{C@aNJXnHU)N*V6Y7s!Ps$4vi^?_ie2>IX@&4KoAWkM}LjU2^ z!*cFHZI*_jZ05#EbWH#x{BGI7{Ege;z5 zqBW?l-pFi563nGkF{!Io7RZ%0l)I$*19w5N*w>1Gf6=&W0OdI0+hTYc}2tfY-#$CKP ztmdolBeLJrg!$&Ko`Z>%BR$=}_P;s%zcEq&m!Vh0_kMF0mj5d7BXFiuVYL^dK$hNU zdJSU*0#Zvt8hLHmV(IgPdwCgH=fps4Y<4bT+QTtZ)OkBm=NcU(QX$uyDXIkAm*v!LZ*nPc^lx6K+DMw8N8yK#2-S-h5FaQ7t014!3>tIa(KS*M1YvgSGZFB$p?LP?v^lftAXaDcL zR3whc{)fnmzYFd2*em98D;Hx2&C>=U*zHLeBJvp{#JuyUmXlF7Ai~feX?8swYwj() zYB`URv(rbJlE^W~`&C88wi)bKdUdsthly2zT}6V6dR!apXzNz!=I&w8y{KyDfTCYu znj>Bi7j{_)*ymuuaAwXAQAQg$!8LYx9KlVCB-55=c*O3GFt0$0u8Rh}*EL_`+bS*9 z1&}LwQ%t)N1uTjhjW*+gDqUjni-J?a*#u<=w?sqTfUT+V!@|8G8WBzUuMdKn`@`4~ z_xns9-J&zzedM6Q|HTo+Lj`(+F9Ni?)A?XB>z38P7_|WtzUYoCm1j7@HZx-K!&uvC z_6ekw?~q+;V!aPCh&%p3U?gN%&*~VoS&!%!oi328e*Q1<#zo8+9)Je`WHbN(h~F^! z54`=aNIT~-kJ%e>&av+K@{bK95NHnx5f7iYi4oeUT=Xsv?AfMN+$D|Yi~{Ru7e^BS z9(L&h1?q5#t_B)v=bH3jYyX5f^-U}zDqNi5ncHwYACCrYP(CVmUGS_9A3S~XtSvF(5MMUgZ)^b7V$IBdCtz4%>?|Z5h$RzxMqmBvC0?nu6Ptt87&MD6-bN8XqB!t~u6X6e zpr>6`nu!tF-hbK1rOajr$s**(N^zcnnSa3wb`Fi(D`PF0$C*L`iG2WXA@wK-^MuxK zGt?IkHV1_PMC&iPUozP&lOo$AMumEoLD|_^>9MWD zQCEZrf+W3SjofPpOVc`T*c`^+M~pHeOYUQB>rBTC{7NG{oC+34a*c%qtv#_vM{ya} zHZlwg_U5?`RIeY@j&H>WoB{x6d`d@>w=BN2EMRla)QxHviVewE5z;(lZ&kQ6$u#@r2M*5(nVj4Yq=ozH` zh$>iSi~+eXZs~_cXZh(6FiMnUVn`W%k!4}X%!?3IP&ql&f`@ZmEXP0x)$jg^C%GmsemfvQHlKqNwQ=SfhPo6TSwt^mvN%%)T#Y5oN%}Nd9xCm(ptLQ&sqMzuunqm&d4WRdnfi|L#q%Y1B?TB;*OsyyKTDkuXG3 zz(`8;GyWK93q`m#%|ocoYJgW(NA*IV25SVAUe*u$&L}kVn+)&|kZtA_`tVXL#Ri5! zut5EZzXYd^^)UGL*kC#mYnlpF5eh0+HAps_3R?6@;Ug&@qx}PHdr8JXY-9k0J>I;9 zqyH!23qzE<#6tY`Ip`c5s0&l5IS63=0hWtj8kke#Hjo0f?&JuC{0FF9q3j%N9B*Nm z@T2nf$$)vl2-&ZI!;zn9pMXbjC6`?x7Q~52%L)^hrC$crL8L@F0>KC}HaLV0pCS~y zgfc(W_^#*q7Y!6a_F4T5e|xi{hO#Z4`*GlF7&CG#al?E9|9qs890{`XiAO;U!GSp< zAHM$Ov%9pRvu$--W@NwsgaK>EkAqqaSgSc{lL(Rx1xN<)%^OOIHQ(9!03W^%DO#5t zb~%H@y#Y?xE%yHkEXf0ZFant^xCkWb39W#&*>1x71qb_LTPWATG$G3#P8Sj9G}wzy z^Zl;6#-QTnQ+BiVf)*Z)@mazUIPB4-bNaMr!i)K#&GzvrW>AgIGO$MBn@Mb|%npaf z9{`nV1frG(?i9cdi(2Fi(L!617fl{q3{2D$4iojBo^P9+%Wgyd8cg^EBfRC5Zcyh0 z4DCt&YD$?+tb}q4h7i_eGMuTNN4)}{Ad$Y`qK4?lY!$G5iRv>96-`RGl;=q<5l-IX zEd23)?J4tVUF#aK5wzK@!=vF{`^pU6^MxrDMCB&5A7L1?gz?I&uLmHyBsb%2P$B>l z{}n(P26mUo924N7?vq1s#!AWka|C!N#|Y~$CqQ(d%zO@}Uy>P84bQVu8apFvaG4#X zG8A$gq5^U)jkOPrQuyaOOBe+zjWi4BtUL>Wm+%RkQA8c=yg3iAg*R^dW~b5oCsz5J z)8;)tF-UvUi4|tk-UcW?rnM;iS~bUyS-6B=?Q~*Wa38jzTe|2-Lnz+C4rwuPT#Q>) zl+MwgWOm3>nV^%=U%+U8{j*85ZGZGMi26+HRY{GubL56bqWi<8KDj-VFQ}<~)x09n z%yet;biRUVR`3n>Ea6vuBBFS?Jd8J@dCl}b!vOXEqR7){On&C-hR6) zM^MwN%+~&ZX?lhG_3*GjFYv%-&|B>f_d0kQQ%=r^vb4c>&HmR?OIHoQy2~es(7+2Q z=pNJfR<33NJ%%B^uk<-?nBGX1TWSHQ-naV|Z9D>@_s`2*05(G4?j(~CJ z7p(FJG6PUH31k0aX7|lT>HSCsj{7H)8*j!09#3MccZPzbbUV;uExR~Z$()W$Dxw3zNeL|@+&X*(3;m;}&?ZNEYi^#VjY z!Vl;~7GWdubTL9-l%qftuX`9YpKN5h2yeB?yeOg>1PlG&(a^Ht|{#Pe7MZ zDo7;Ax_Y3spSCmqp4@oNEDUz~&J<3lLm-GC(RF5AI2>-jD2zdiANUZMbXJz>4+?OS zA`E>r!htMAMMem9&^2&NdvWoG;@X8LZ?A|+p;N@)A=px(*|fXfKkfo%?LzUd>_`MX zIysV2NVgct{a^9cKV^`v1W0*NWsLL-;C7w_S90=KmEygGnJ$YM?AA#>LW4<}OH?Gn zqXQeFod`$mW87l3vay=-ClfMc#-ECU@w3>a^8b`}nY~O>X1*3fb{eyP^(#U?&#UmX zWB^?Un(P2Pf0uBrtAd5+1wZ%gAe0jZ@6-KS}3_T4;RcuWZG7 zdLdktDS7aDJM6f_la2A0`JzM1sy?iZfnntnY=&f3mM{ma@esXm>^;-`;Nc{;RM9X6!MFrjmih)KH>7rh`(T3lW1d(x^~Ph2?Bs}(=kWxPO-Gs3Ik1t zBnyfp{Z!M#G@Pp<@=6iDBtw$Gq|=6OyYL&Jtx9AVsh^T#K#qBTJP$?8*^}CF@WlWb z7pE<3^(oRr*vr3jm($fg+LAljZAqC_i&kVK?lkfln_59rTJ9@F)6`0%Rg{!aJ(w=# zv;^1~GqL)C^m@@D^=Gb19n7U8<=QY8cL8tA?7Y-4A$>@{Iy8DDC@Ktbq02$XJa6(T zQUA`x>-&C;N&n>i6>FvgCF^iryI&FtMz6`_;go%=I} zYOYav&PX19VXgA8SIeH9ZN9+-;;t@!Ep;zFS`^Tz%?!K) zQPo8YA46Ku6&E&I)njOw*LluD;>b%DJsBxcWgZIJ7-(JlZF6}{_&GGn#1Q~fWjYG-GMV3d5bW7q4C_toxfm-p zs1^}_^UFyq?B^u^fNK&fwAj_zc=TdmI?6LzH>qcezo@S0XU>*rmYqUw3ld)ga_INz zG|tOt1t*IlQaq}u7de5pA`-ki_HH!cN(>gum)av_|HiOcoJi`-7T?T>1fP>MSQx76 zHZ+g{FQ@HW8Wv3R9^EL4s=`%mVKMOpS0+A~7R&$Ab2&F>5vn->Ub`o;?7DAJZBNBz zND7X#R^3y~%e55Doey&a29mCg?#7XkUL8Raa^3!U^x=?T!cMDWcB8RSp`AKr!O)X| zo@5|8>Da+ezV9@szen52YY);-Lz5oi(#DASTd)*cq^?5w{If=NAxYT9%@C5?un6EiP+!pD_Xuif9_GH(-Z9;#7hN~`i!%}%@r8l)W>c?UQr#y2*g?|LBexF*^(N z*wYd3E0P+h+QJCxiT6unPeOw+`A?BC5Tk%i(=mgTdJ#7)-v;1I*qab(;X=0#p653a zEL-8Wi1-j@&1)3m&|{^*F_X3oD&*)YAC8AHNH1q6I6LJN9U{G~a@XpwB7`CJ zL9I@+aR`hJ*-&U=V}5XaoUQg)EmYG$IeIrXjxtlJ>`YbF_D?DF_gW#SH<-3`pJ=Sn9`5u%wa!~-0#|c{zun#ggJ{^?xr?pW-TnJ zPCkT^g_&W^Auc-#9le79eOXkYc@pLW+K9uwo1@Vl)Xr`frHRH)k^vG(eWind|B38a zP-0v;q7XSX?@U8LJSpxcJZ~$3(|ym`j})EY<2X3cN!R2~vW7{=T=x~HQo3{TW=&$J z%&UHBY)Lk_!uAINK<^cbs?D2PseCJhRzPMhX((Vi%W>V$76*-reVV#E#pLA zA?U+8lW3$n&=S7I6nG5TIxAa*92?KSv40a7W+*G3d5bD2qW6L)tP-n1){Es$e61kY zpae zQ?Jv|r_)?OcbR(~eY~562f%+YQ}US4xzMdX+<8>kU@a7LUb}P-fp`+zSV_clHfvu3 zK_JC>F#kTO_(GQrr^Rih%|SV$d3JpLiD7hRz)G?kM90Hu{xBNCqzjq2UI?OZZ%Bsb zdE`rf&e9QHUn$6LofFAFT7G}=h)n+SdXQAuTzn(z{_7d(aN{}g$L>!#U%i)x9Yr_l zUb>?`w!A0ykoj}2ge|Kh=fA{sV%pIyIQH&IE(n8oU(OFu>M;FB@ZYz?pw#;@{px#I zCeu&TW*z2EJ#4aZLIK6VJPT@_rC6Sk7jw6VwO{26OUGdoDSjV0)!F9+UibS`**e3a zN3?r$ai2>@9wkeoh{@7+f{)hO9HOh;#NDQEmkdOoJ`}oo>v3o@Lbs6+yPeJSKzwZF zeNDqJ5jj^JBIuhe@ec&K*Cm}-WkoBn!U)+X-KD)f$d#3^&Do^ES7rnJoydB1O}9LG zuYqg8okuHvZ2G*LcsB-bj9XEwo*5|a{^AEnww%91a;{1#YzxmW;ui71;`buAD;Gw* zfYq;^$@lO3)?9p&T@~}Wp+j_-)em-L4=#uw zLEf|CX>(gdU@-Jo&`s5XQ+EeAPn zPkg+fNtj>5oV0;`ei@XVZ5q0{645|>5dGcm1fq3@ry${QdoV`o)b^H#*0V;-KSQ6c zyokjZ*1Aj)Smv3I5Vt$C`l3NI3mY&!r=!RbK{PmKsr74MC^HTaUx&a2EvyR)=!TjB)y-2{eprnl@|Ll&4XLB=vjA_-kr4bB0CZJF2 z%NM*pd#SlGm-3Y(b(Z@MM;h4}BUtcr>r;=jhHKr0J#h(y|A8MpO{aXJe<>R>+(~RA z{o?9Cxa{_oAuaDtyL@VzI(e(=6QT1CRL+@4ga#gab6BCn(1aZGQGSdF$fhCG`0_eO z`!b(6Z%q(prXB;|TCT%mu=QZ&JnwP+{ud-Ibb*)01cE*FR^&S&VK!ML$DhMs2I{CDNPZLgl^ zr+eiHKs_;PIrxoF6HA+HBAB)-?cl4BDCd;&^llp@UN9(~KJZCSR{)y%=}w`v<k^obvjcxD2}Ra+_5 zOHg`mB#%62C9yFKkM z)Pvljv!mWHg}(UydvEjgb*}j#yQYfbi%NZppD`c9-!;PzO?VQk8H}{}alsDX;(R{h zB5BSN*4JiXsq*+B#!`AwbO}W9n}s&EtM7sOT*76tb&1eL8WLr88XRi)Y2ESaBP+&p zveugzMpLG-ki%JnDxGB|RD29sN~3>~jJP+OT1k&qZrRn5wPro}VRXa|$y_a&yuuyk zEt7JvV!_0yaC-WIqqWE|r=O#y+a}GF#a4r1Q=_yz0kOU6)MK;cx-`yaMYE9IRz@^` zW?!8uYeK9fWXcv*y1#e9L~BM6AQ(fnCcC(}KRuZ+_TbGQ&pHpE+aK|HYjDgl@AflY zA_fk+EV=$fjnNs||HmQ4$L|rOqn|pgXxk1@Lb+*8tAor&w;yg6x06{4hNOlq zXIz4>fmr-l6@jV-SRe#{fx=wWdp{wX6^-fqBG!d&nQy1R==UI zn}YacVzTO!qxA!0gP$m_B!{VkFV<;(3Y?i za-U!!*Gq^UXuav77I{nR?0#H+S_+6_EPAdglB5XFKNvlu54Gg;9Vq3)^rObg1uFEK zdaHBz-9dapq#7V+7llh;I8AikAz%J_jB3oN$gw#DoPi&20a;@0v zLv}Mj45x<{4s-D1W0nXXD!CD7H5EU$;-b5yr9=%f+dKRc+ff6OM8qOSu`X1(9NAnA zxJm5ihajN8z;y8L73Nq2M;aVi84Pi_D&DFOLoNn{Ha$nUOmFSP{7hxG%h^Fgok|Q0 zJ>Dq7(V$s36ywVdUXFOwkBO49-wkB7Va3FrlDEQUwZwmMku(;{FCQwjmGb834b!d7 z!j=8`^4rrtrSX%TI){220snE7EKmUyDu%#U(Yi?#Y;H%PI|tnWpL90#2}tM|brYUf zgP)@Sonbf(yO4CwLDb&}g}o1CSm`m62fL1k4~}@dwrMUm!08bDH{KxLtNb*~0V7er zWTn;VBbz6Pd*4($a|katwdcd*+(5qf3?q6W{3jtcpRj=f%v0$uS|AADX=e2E(siq4 zS;Pi+IeY(mHxbMk3L)RPhjyHgBzRt znKK09B|<+zmp0l3;`kKmq1}0(@3PV(Hwjyo4O-b-%;b+qq0=ZlGl((Wn9yRLTL-P( z>02V@ffEw$hJ!xgagyDW7C*D{aON$S+Dm)VV{+W_fxA6z2&pn{h01(Q71{-Pd6@jZ zJ!)Z+h}m=&Es3!4CUrreYrAQ6vUHNYes3mRDNooXlY#A2=l!sormDqIoah*7^Be{D<_PFRV>%ZJlgvolG46 z)kX{?PS~t5zz$!5Ji-TGhMo6NY7)yLz_8x4Hmre^)ZxH13Jb*V?O%xb4rxX7n8UZL zCkuZ*7gN~Zxhb32{aBQkrVL9agbF&0mFSckz0%u4e>p}!ch*CT(0>W_%U=2#Q%p1I1SGTx

Mz~j;gwW)Pd@P5 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 literal 0 HcmV?d00001 diff --git a/clearing-parent/reports-service/src/main/resources/templates/NTCR_TEMPLATE.docx b/clearing-parent/reports-service/src/main/resources/templates/NTCR_TEMPLATE.docx new file mode 100644 index 0000000000000000000000000000000000000000..54a7849c6ccb8c88e02c00a13a1ce21b978ca618 GIT binary patch literal 52772 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

+A`DJFKxDSo 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%0Ad0@)JH)d;_GEMZ1M-N2s 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

-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 companyImdg; + private Imdg profileDocumentImdg; + private Imdg accountImdg; + private Imdg companySymbolsImdg; + @Autowired + @Qualifier("hazelcastServiceTest") + protected ImdgProvider imdgProvider; + + @PostConstruct + protected void init() { + waitAvailableImdgProviderAndAddAdminWithDefaultId(); + companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class); + accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class); + companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + + Company company = new Company(); + company.setId(consumerId); + company.setClearingCode("326546"); + company.setShortName("ShortName"); + company.setFullName("FullName"); + companyImdg.insert(company); + + ProfileDocument profileDocument = new ProfileDocument(); + profileDocument.setCompanyId(consumerId); + profileDocument.setIssueDate(LocalDate.now()); + profileDocument.setNumber("65446565"); + profileDocument.setDocumentType("CLRN"); + profileDocumentImdg.insert(profileDocument); + + CompanySymbols companySymbols = new CompanySymbols(); + companySymbols.setId(currentID.getAndIncrement()); + companySymbols.setCompanyId(consumerId); + companySymbols.setCompanySymbol("INN"); + companySymbols.setCompanySymbolValue("INN 65324654646446"); + companySymbolsImdg.insert(companySymbols); + + companySymbols.setId(currentID.getAndIncrement()); + companySymbols.setCompanySymbol("CLRC"); + companySymbols.setCompanySymbolValue("CLRC test"); + companySymbolsImdg.insert(companySymbols); + + companySymbols.setId(currentID.getAndIncrement()); + companySymbols.setCompanySymbol("RGRC"); + companySymbols.setCompanySymbolValue("RGRC test"); + companySymbolsImdg.insert(companySymbols); + +// clearAllInImdg(accountImdg); + Account account = new Account(); + account.setId(consumerId); + account.setCompanyId(consumerId); + account.setAccountType("INFO"); + account.setAccount("3548903459684"); + accountImdg.insert(account); + } + + // @Test//тест заполнения шаблона + void buildNotification() { + NCMPNotificationBuilder builder = new NCMPNotificationBuilder(imdgProvider); + File outputFile = builder.buildNotification(consumerId); + try { + Files.deleteIfExists(outputFile.toPath()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} \ No newline at end of file diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/notifications/NTCRNotificationBuilderTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/notifications/NTCRNotificationBuilderTest.java new file mode 100644 index 000000000..2788f0fc7 --- /dev/null +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/notifications/NTCRNotificationBuilderTest.java @@ -0,0 +1,84 @@ +package ru.spcex.clearing.reports.notifications; + +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.company.CompanySymbols; +import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.test.config.ImdgTestConfig; +import ru.spcex.clearing.test.config.KafkaTestConfig; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +import javax.annotation.PostConstruct; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.time.Instant; + +import static ru.spcex.clearing.test.config.ImdgTestConfig.currentID; +import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = { + ImdgTestConfig.class, + KafkaTestConfig.class}) +class NTCRNotificationBuilderTest { + + private Long consumerId = 222L; + private Imdg companyImdg; + private Imdg tradingClearingRegistryImdg; + private Imdg companySymbolsImdg; + @Autowired + @Qualifier("hazelcastServiceTest") + protected ImdgProvider imdgProvider; + + @PostConstruct + protected void init() { + waitAvailableImdgProviderAndAddAdminWithDefaultId(); + this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); + this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); + this.companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); + + Company company = new Company(); + company.setId(consumerId); + company.setClearingCode("326546"); + company.setShortName("ShortName test"); + company.setFullName("FullName test"); + companyImdg.insert(company); + + + CompanySymbols companySymbols = new CompanySymbols(); + companySymbols.setId(currentID.getAndIncrement()); + companySymbols.setCompanyId(consumerId); + companySymbols.setCompanySymbol("CLRC"); + companySymbols.setCompanySymbolValue("Symbol test"); + companySymbolsImdg.insert(companySymbols); + + + TradingClearingRegistry tradingClearingRegistry = new TradingClearingRegistry(); + tradingClearingRegistry.setId(consumerId); + tradingClearingRegistry.setCreated(Instant.now()); + tradingClearingRegistry.setCompanyId(consumerId); + tradingClearingRegistry.setCode("test code"); + tradingClearingRegistry.setTradingClearingRegistryPurpose("test Purpose"); + tradingClearingRegistry.setMoneyAccountId(consumerId); + tradingClearingRegistry.setDepoAccountId(consumerId); + tradingClearingRegistryImdg.insert(tradingClearingRegistry); + } + +// @Test//тест заполнения шаблона + void buildNotification() { + NTCRNotificationBuilder builder = new NTCRNotificationBuilder(imdgProvider); + File outputFile = builder.buildNotification(consumerId); + try { + Files.deleteIfExists(outputFile.toPath()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} \ No newline at end of file diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java index de0a45094..b91628497 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java @@ -4,7 +4,9 @@ import org.junit.jupiter.api.Test; import ru.spcex.clearing.reports.notifications.DOCXService; import java.io.File; +import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; class DOCXServiceTest { @@ -30,4 +32,61 @@ class DOCXServiceTest { file.delete(); } +// @Test//для отладки алгоритма объединения ключей + void normalize() { + List data = Arrays.asList(new String[]{"test ", "someText${", "some", "Key}/${ano", "ther", "Key}someText", "test"}); + + String concatText = ""; + boolean needConcat = false; + int first = 0; + for (String run : data) { + boolean finded = false; + try { + + String currText = run; + if (currText == null) break; + if (needConcat) { + concatText = concatText + currText; + if (currText.contains("}")) { + String[] strAr = new String[3]; + int start = concatText.indexOf("${"); + int end = concatText.indexOf("}") + 1; + strAr[0] = concatText.substring(0, start); + strAr[1] = concatText.substring(start, end); + strAr[2] = concatText.substring(end, concatText.length()); + System.out.println(strAr); + + int last = data.indexOf(currText); + for (int i = first; i <= last; i++){ + if (i - first < 3){ + data.set(i, strAr[i - first]); + } + else { + data.set(i, ""); + } + } + currText = strAr[2]; + if (currText.contains("${")){ + needConcat = true; + concatText = currText; + first = data.indexOf(currText); + } else { + needConcat = false; + concatText = ""; + first = 0; + } + } + } else if (currText.contains("${") && !finded) { + needConcat = true; + concatText = currText; + first = data.indexOf(currText); + } + + } catch (IndexOutOfBoundsException ignored) { + // can't get all max text position for XWPFRun + } + } + System.out.println(data.toString()); + } + } \ No newline at end of file diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index 7101cbf0f..7c9901cfa 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -77,6 +77,8 @@ public interface Consts { String DESTINATION_BANK_ACCOUNT_NEW = "bank-account-new"; String CREATE_REPORT = "create-report"; + String CREATE_NOTIFICATION_NTCR = "create-notification-ntcr"; + String CREATE_NOTIFICATION_NCMP = "create-notification-ncmp"; String CREATE_REPORT_FOR_SESSION_ID = "create-report-for-session-id"; String CREATE_REPORT_FOR_SESSION_ID_LIST = "create-report-for-session-id-list"; String CREATE_REPORT_FOR_PERIOD = "create-report-for-period"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/NotificationRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/NotificationRequest.java index f09103e1d..5a542d32f 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/NotificationRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/NotificationRequest.java @@ -10,14 +10,14 @@ public class NotificationRequest { * Идентификатор участника клиринга */ @JsonProperty - protected String consumerId; + protected Long consumerId; - public String getConsumerId() { + public Long getConsumerId() { return consumerId; } - public void setConsumerId(String consumerId) { + public void setConsumerId(Long consumerId) { this.consumerId = consumerId; } }