RED-4610: Support of multi-file word report templates

This commit is contained in:
Ali Oezyetimoglu 2022-08-08 15:49:24 +02:00
parent bb616e4a19
commit 6b78087375
3 changed files with 22 additions and 4 deletions

View File

@ -3,10 +3,13 @@ package com.iqser.red.service.redaction.report.v1.server;
import com.iqser.red.commons.spring.DefaultWebMvcConfiguration;
import com.iqser.red.service.redaction.report.v1.server.client.DossierClient;
import com.iqser.red.service.redaction.report.v1.server.configuration.MessagingConfiguration;
import com.iqser.red.service.redaction.report.v1.server.settings.ReportTemplateSettings;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
@ -19,6 +22,7 @@ import io.micrometer.core.instrument.MeterRegistry;
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
@Import({DefaultWebMvcConfiguration.class, MessagingConfiguration.class})
@EnableFeignClients(basePackageClasses = {DossierClient.class})
@EnableConfigurationProperties(ReportTemplateSettings.class)
public class Application {
/**

View File

@ -31,6 +31,7 @@ import com.iqser.red.service.redaction.report.v1.server.model.MultiFileDocument;
import com.iqser.red.service.redaction.report.v1.server.model.MultiFileWorkbook;
import com.iqser.red.service.redaction.report.v1.server.model.PlaceholderModel;
import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry;
import com.iqser.red.service.redaction.report.v1.server.settings.ReportTemplateSettings;
import com.iqser.red.service.redaction.report.v1.server.storage.ReportStorageService;
import com.iqser.red.service.redaction.v1.model.RedactionLog;
import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist;
@ -56,7 +57,7 @@ public class ReportGenerationService {
private final ExcelReportGenerationService excelTemplateReportGenerationService;
private final GeneratePlaceholderService generatePlaceholderService;
private final DictionaryClient dictionaryClient;
private final ReportTemplateSettings reportTemplateSettings;
@SneakyThrows
@Timed("redactmanager_generateReports")
@ -132,7 +133,7 @@ public class ReportGenerationService {
for (MultiFileDocument multiFileDocument : multiFileDocuments) {
if (reportEntries.size() >= 2000) {
if (reportEntries.size() >= reportTemplateSettings.getMultiFileChunkSize()) {
try (ByteArrayInputStream is = new ByteArrayInputStream(multiFileDocument.getTemplateAsBytes())) {
XWPFDocument doc = new XWPFDocument(is);
@ -145,7 +146,7 @@ public class ReportGenerationService {
continue;
}
if (multiFileDocument.getNumberOfEntries() >= 2000) {
if (multiFileDocument.getNumberOfEntries() >= reportTemplateSettings.getMultiFileChunkSize()) {
byte[] wordDoc = wordReportGenerationService.toByteArray(multiFileDocument.getDocument());
String storageId = reportStorageService.storeObject(reportMessage.getDownloadId(), wordDoc);
storedFileInformation.add(new StoredFileInformation(null, storageId, ReportType.WORD_TEMPLATE_MULTI_FILE, multiFileDocument.getTemplateId(), multiFileDocument.getDocumentPartNr()));
@ -157,7 +158,7 @@ public class ReportGenerationService {
multiFileDocument.setNumberOfEntries(0);
}
}
wordReportGenerationService.generateWordReport(reportEntries, placeholderModel, multiFileDocument.getTemplateName(), multiFileDocument.getDocument(), fileStatus, dossier, isLastFile ? true : multiFileDocument.getNumberOfEntries() + reportEntries.size() >= 2000);
wordReportGenerationService.generateWordReport(reportEntries, placeholderModel, multiFileDocument.getTemplateName(), multiFileDocument.getDocument(), fileStatus, dossier, isLastFile ? isLastFile : multiFileDocument.getNumberOfEntries() + reportEntries.size() >= reportTemplateSettings.getMultiFileChunkSize());
multiFileDocument.setNumberOfEntries(multiFileDocument.getNumberOfEntries() + reportEntries.size());
}

View File

@ -0,0 +1,13 @@
package com.iqser.red.service.redaction.report.v1.server.settings;
import org.springframework.boot.context.properties.ConfigurationProperties;
import lombok.Data;
@Data
@ConfigurationProperties("redaction-report-service")
public class ReportTemplateSettings {
private int multiFileChunkSize = 2000;
}