RED-4610: Support of multi-file word report templates
This commit is contained in:
parent
bb616e4a19
commit
6b78087375
@ -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 {
|
||||
|
||||
/**
|
||||
|
||||
@ -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());
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user