DM-285: adjust reports to new component log

This commit is contained in:
Kilian Schuettler 2023-10-04 15:26:07 +02:00
parent fc8b51603c
commit 9da3e2d966
4 changed files with 99 additions and 33 deletions

View File

@ -24,7 +24,7 @@
<properties>
<persistence-service.version>2.79.0</persistence-service.version>
<persistence-service.version>2.197.0</persistence-service.version>
<apache-poi.version>5.2.3</apache-poi.version>
</properties>

View File

@ -83,7 +83,11 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.iqser.red.service</groupId>
<artifactId>persistence-service-external-api-v2</artifactId>
<version>${persistence-service.version}</version>
</dependency>
<dependency>
<groupId>com.iqser.red.commons</groupId>
<artifactId>test-commons</artifactId>

View File

@ -0,0 +1,90 @@
package com.iqser.red.service.redaction.report.v1.server.service;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileAttributeConfig;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel;
import com.iqser.red.service.persistence.service.v2.api.external.model.FileComponents;
import com.iqser.red.service.persistence.service.v2.api.external.resource.ComponentResource;
import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesConfigClient;
import com.iqser.red.service.redaction.report.v1.server.model.ExcelModel;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
@Service
@RequiredArgsConstructor
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
public class ComponentRowsReportService {
ComponentResource componentResource;
FileAttributesConfigClient fileAttributesClient;
static int FILENAME_COL = 0;
static int COMPONENT_NAME_COL = 1;
static int COMPONENT_VALUE_COL = 2;
public void addComponentRows(Sheet sheet, FileModel fileModel, ExcelModel excelModel) {
FileComponents fileComponents = componentResource.getComponents(fileModel.getDossierTemplateId(), fileModel.getDossierId(), fileModel.getId(), false);
AtomicInteger rowIndex = new AtomicInteger(excelModel.getRedactionPlaceholderRow());
String oecd = getOecdNumber(fileModel);
int fileNameRow = rowIndex.getAndIncrement();
sheet.createRow(fileNameRow);
excelModel.getWrittenRows().add(fileNameRow);
Cell fileNameCell = sheet.getRow(fileNameRow).createCell(FILENAME_COL);
fileNameCell.setCellValue(fileComponents.getFilename());
fileComponents.getComponents().forEach((componentName, values) -> {
if (values.isEmpty()) {
return;
}
int componentNameRow = rowIndex.getAndIncrement();
sheet.createRow(componentNameRow);
excelModel.getWrittenRows().add(componentNameRow);
Cell componentNameCell = sheet.getRow(componentNameRow).createCell(COMPONENT_NAME_COL);
componentNameCell.setCellValue(oecd + "-" + componentName.replaceAll("_", " "));
Cell valueCell = sheet.getRow(componentNameRow).createCell(COMPONENT_VALUE_COL);
valueCell.setCellValue(values.get(0));
for (String value : values.subList(1, values.size())) {
int additionalValueRow = rowIndex.getAndIncrement();
Cell additionalValueCell = sheet.createRow(additionalValueRow).createCell(COMPONENT_VALUE_COL);
excelModel.getWrittenRows().add(additionalValueRow);
additionalValueCell.setCellValue(value);
}
});
sheet.createRow(rowIndex.get());
excelModel.getWrittenRows().add(rowIndex.get());
excelModel.setRedactionPlaceholderRow(rowIndex.getAndIncrement());
}
private String getOecdNumber(FileModel file) {
return fileAttributesClient.getFileAttributeConfigs(file.getDossierTemplateId())
.stream()
.filter(f -> f.getLabel().equals("OECD Number"))
.map(FileAttributeConfig::getId)
.findFirst()
.map(oecd -> file.getFileAttributes().get(oecd))
.orElse(null);
}
}

View File

@ -59,7 +59,6 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel;
import com.iqser.red.service.redaction.report.v1.api.model.rss.SCMComponent;
import com.iqser.red.service.redaction.report.v1.server.model.CellIdentifier;
import com.iqser.red.service.redaction.report.v1.server.model.ExcelModel;
import com.iqser.red.service.redaction.report.v1.server.model.ImagePlaceholder;
@ -94,7 +93,8 @@ public class ExcelReportGenerationService {
REDACTION_ENTITY_DISPLAY_NAME_PLACEHOLDER,
SCM_FUNCTION_PLACEHOLDER,
SKIPPED_PLACEHOLDER);
private final RSSPoc2Service rSSPoc2Service;
private final ComponentRowsReportService componentRowsReportService;
@Timed("redactmanager_generateExcelReport")
@ -142,7 +142,7 @@ public class ExcelReportGenerationService {
}
if (excelModel.isScmFunctionPlaceholderPresent()) {
addSCMEntryRows(sheet, fileModel, excelModel);
componentRowsReportService.addComponentRows(sheet, fileModel, excelModel);
}
if (isLastFile) {
@ -239,35 +239,7 @@ public class ExcelReportGenerationService {
}
private void addSCMEntryRows(Sheet sheet, FileModel fileModel, ExcelModel excelModel) {
var scm = rSSPoc2Service.getRSS(fileModel.getDossierId(), fileModel.getId());
var scmResultMap = scm.getFiles().get(0).getResult();
AtomicInteger rowIndex = new AtomicInteger(excelModel.getRedactionPlaceholderRow());
var oecd = rSSPoc2Service.getOecdNumber(fileModel);
for (Map.Entry<String, SCMComponent> entry : scmResultMap.entrySet()) {
sheet.createRow(rowIndex.get());
excelModel.getWrittenRows().add(rowIndex.get());
Cell keyCell = sheet.getRow(rowIndex.get()).createCell(0);
keyCell.setCellValue(oecd + "-" + entry.getKey().replaceAll("_", " "));
Cell valueCell = sheet.getRow(rowIndex.get()).createCell(1);
valueCell.setCellValue(entry.getValue().getValue() != null ? entry.getValue().getValue() : entry.getValue().getOriginalValue());
rowIndex.getAndIncrement();
}
sheet.createRow(rowIndex.get());
excelModel.getWrittenRows().add(rowIndex.get());
excelModel.setRedactionPlaceholderRow(rowIndex.getAndIncrement());
}
private void replacePlaceholders(Cell cell, PlaceholderModel placeholderModel, String dossierName, String filename) {