Bulk operations errors fixed:
- changed container rate order - allow blank rows
This commit is contained in:
parent
aa054ab706
commit
afb72e4d44
6 changed files with 95 additions and 38 deletions
|
|
@ -1,8 +1,8 @@
|
|||
package de.avatic.lcc.model.bulk.header;
|
||||
|
||||
public enum ContainerRateHeader implements HeaderProvider {
|
||||
FROM_NODE("Origin"), TO_NODE("Destination"), CONTAINER_RATE_TYPE("Transport mode"), RATE_FEU("Rate 40 ft GP [EUR]"),
|
||||
RATE_TEU("Rate 20 ft GP [EUR]"), RATE_HC("Rate 40 ft HC [EUR]"), LEAD_TIME("Lead time [d]");
|
||||
FROM_NODE("Origin"), TO_NODE("Destination"), CONTAINER_RATE_TYPE("Transport mode"),
|
||||
RATE_TEU("Rate 20 ft GP [EUR]"), RATE_FEU("Rate 40 ft GP [EUR]"), RATE_HC("Rate 40 ft HC [EUR]"), LEAD_TIME("Lead time [d]");
|
||||
|
||||
private final String header;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +1,15 @@
|
|||
package de.avatic.lcc.service.excelMapper;
|
||||
|
||||
import de.avatic.lcc.dto.generic.TransportType;
|
||||
import de.avatic.lcc.model.bulk.HiddenTableType;
|
||||
import de.avatic.lcc.model.bulk.header.ContainerRateHeader;
|
||||
import de.avatic.lcc.model.bulk.header.HiddenNodeHeader;
|
||||
import de.avatic.lcc.model.bulk.HiddenTableType;
|
||||
import de.avatic.lcc.model.rates.ContainerRate;
|
||||
import de.avatic.lcc.repositories.NodeRepository;
|
||||
import de.avatic.lcc.repositories.rates.ContainerRateRepository;
|
||||
import de.avatic.lcc.service.bulk.helper.ConstraintGenerator;
|
||||
import de.avatic.lcc.service.bulk.helper.HeaderGenerator;
|
||||
import org.apache.poi.ss.usermodel.CellStyle;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -36,7 +33,7 @@ public class ContainerRateExcelMapper {
|
|||
|
||||
public void fillSheet(Sheet sheet, CellStyle headerStyle, Integer periodId) {
|
||||
headerGenerator.generateHeader(sheet, ContainerRateHeader.class, headerStyle);
|
||||
containerRateRepository.listAllRatesByPeriodId(periodId).forEach(rate -> mapToRow(rate, sheet.createRow(sheet.getLastRowNum()+1)));
|
||||
containerRateRepository.listAllRatesByPeriodId(periodId).forEach(rate -> mapToRow(rate, sheet.createRow(sheet.getLastRowNum() + 1)));
|
||||
headerGenerator.fixWidth(sheet, ContainerRateHeader.class);
|
||||
}
|
||||
|
||||
|
|
@ -52,15 +49,15 @@ public class ContainerRateExcelMapper {
|
|||
|
||||
public void createConstraints(Workbook workbook, Sheet sheet) {
|
||||
|
||||
var namedRange = constraintGenerator.createReference(workbook, HiddenNodeHeader.MAPPING_ID.ordinal(),HiddenTableType.NODE_HIDDEN_TABLE);
|
||||
var namedRange = constraintGenerator.createReference(workbook, HiddenNodeHeader.MAPPING_ID.ordinal(), HiddenTableType.NODE_HIDDEN_TABLE);
|
||||
|
||||
constraintGenerator.createFormulaListConstraint(sheet, ContainerRateHeader.FROM_NODE.ordinal(), namedRange.getNameName());
|
||||
constraintGenerator.createFormulaListConstraint(sheet, ContainerRateHeader.TO_NODE.ordinal(), namedRange.getNameName());
|
||||
|
||||
constraintGenerator.createEnumConstraint(sheet, ContainerRateHeader.CONTAINER_RATE_TYPE.ordinal(), TransportType.class);
|
||||
constraintGenerator.createDecimalConstraint(sheet, ContainerRateHeader.RATE_FEU.ordinal(), 0.0, 1000000.0);
|
||||
constraintGenerator.createDecimalConstraint(sheet, ContainerRateHeader.RATE_TEU.ordinal(),0.0, 1000000.0);
|
||||
constraintGenerator.createDecimalConstraint(sheet, ContainerRateHeader.RATE_HC.ordinal(),0.0, 1000000.0);
|
||||
constraintGenerator.createDecimalConstraint(sheet, ContainerRateHeader.RATE_TEU.ordinal(), 0.0, 1000000.0);
|
||||
constraintGenerator.createDecimalConstraint(sheet, ContainerRateHeader.RATE_HC.ordinal(), 0.0, 1000000.0);
|
||||
|
||||
constraintGenerator.createIntegerConstraint(sheet, ContainerRateHeader.LEAD_TIME.ordinal(), 0, 365);
|
||||
|
||||
|
|
@ -72,13 +69,25 @@ public class ContainerRateExcelMapper {
|
|||
var rates = new ArrayList<ContainerRate>();
|
||||
|
||||
sheet.forEach(row -> {
|
||||
if(row.getRowNum() == 0) return;
|
||||
rates.add(mapToEntity(row));
|
||||
if (row.getRowNum() == 0) return;
|
||||
if (!isEmpty(row))
|
||||
rates.add(mapToEntity(row));
|
||||
});
|
||||
|
||||
return rates;
|
||||
}
|
||||
|
||||
private boolean isEmpty(Row row) {
|
||||
|
||||
for (Cell cell : row) {
|
||||
if (cell.getCellType() != CellType.BLANK) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private ContainerRate mapToEntity(Row row) {
|
||||
ContainerRate entity = new ContainerRate();
|
||||
|
||||
|
|
|
|||
|
|
@ -7,9 +7,7 @@ import de.avatic.lcc.model.materials.Material;
|
|||
import de.avatic.lcc.repositories.MaterialRepository;
|
||||
import de.avatic.lcc.service.bulk.helper.ConstraintGenerator;
|
||||
import de.avatic.lcc.service.bulk.helper.HeaderGenerator;
|
||||
import org.apache.poi.ss.usermodel.CellStyle;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -30,7 +28,7 @@ public class MaterialExcelMapper {
|
|||
|
||||
public void fillSheet(Sheet sheet, CellStyle headerStyle) {
|
||||
headerGenerator.generateHeader(sheet, MaterialHeader.class, headerStyle);
|
||||
materialRepository.listAllMaterials().forEach(material -> mapToRow(material, sheet.createRow(sheet.getLastRowNum()+1)));
|
||||
materialRepository.listAllMaterials().forEach(material -> mapToRow(material, sheet.createRow(sheet.getLastRowNum() + 1)));
|
||||
headerGenerator.fixWidth(sheet, MaterialHeader.class);
|
||||
}
|
||||
|
||||
|
|
@ -56,13 +54,25 @@ public class MaterialExcelMapper {
|
|||
|
||||
var materials = new ArrayList<BulkInstruction<Material>>();
|
||||
sheet.forEach(row -> {
|
||||
if(row.getRowNum() == 0) return;
|
||||
materials.add(mapToEntity(row));
|
||||
if (row.getRowNum() == 0) return;
|
||||
if (!isEmpty(row))
|
||||
materials.add(mapToEntity(row));
|
||||
});
|
||||
return materials;
|
||||
|
||||
}
|
||||
|
||||
private boolean isEmpty(Row row) {
|
||||
|
||||
for (Cell cell : row) {
|
||||
if (cell.getCellType() != CellType.BLANK) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private BulkInstruction<Material> mapToEntity(Row row) {
|
||||
Material entity = new Material();
|
||||
|
||||
|
|
@ -78,7 +88,7 @@ public class MaterialExcelMapper {
|
|||
entity.setNormalizedPartNumber(normalizePartNumber(entity.getPartNumber()));
|
||||
entity.setDeprecated(false);
|
||||
|
||||
if(!validateHsCode(entity.getHsCode())) throw new IllegalArgumentException("Invalid HS Code");
|
||||
if (!validateHsCode(entity.getHsCode())) throw new IllegalArgumentException("Invalid HS Code");
|
||||
|
||||
return new BulkInstruction<>(entity, BulkInstructionType.valueOf(row.getCell(MaterialHeader.OPERATION.ordinal()).getStringCellValue()));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package de.avatic.lcc.service.excelMapper;
|
||||
|
||||
import de.avatic.lcc.model.bulk.*;
|
||||
import de.avatic.lcc.model.bulk.HiddenTableType;
|
||||
import de.avatic.lcc.model.bulk.header.HiddenCountryHeader;
|
||||
import de.avatic.lcc.model.bulk.header.MatrixRateHeader;
|
||||
import de.avatic.lcc.model.country.IsoCode;
|
||||
|
|
@ -9,10 +9,7 @@ import de.avatic.lcc.repositories.country.CountryRepository;
|
|||
import de.avatic.lcc.repositories.rates.MatrixRateRepository;
|
||||
import de.avatic.lcc.service.bulk.helper.ConstraintGenerator;
|
||||
import de.avatic.lcc.service.bulk.helper.HeaderGenerator;
|
||||
import org.apache.poi.ss.usermodel.CellStyle;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -36,7 +33,7 @@ public class MatrixRateExcelMapper {
|
|||
|
||||
public void fillSheet(Sheet sheet, CellStyle headerStyle, Integer periodId) {
|
||||
headerGenerator.generateHeader(sheet, MatrixRateHeader.class, headerStyle);
|
||||
matrixRateRepository.listAllRatesByPeriodId(periodId).forEach(rate -> mapToRow(rate, sheet.createRow(sheet.getLastRowNum()+1)));
|
||||
matrixRateRepository.listAllRatesByPeriodId(periodId).forEach(rate -> mapToRow(rate, sheet.createRow(sheet.getLastRowNum() + 1)));
|
||||
headerGenerator.fixWidth(sheet, MatrixRateHeader.class);
|
||||
}
|
||||
|
||||
|
|
@ -46,13 +43,25 @@ public class MatrixRateExcelMapper {
|
|||
List<MatrixRate> rates = new ArrayList<>();
|
||||
|
||||
sheet.forEach(row -> {
|
||||
if(row.getRowNum() == 0) return;
|
||||
rates.add(mapToEntity(row));
|
||||
if (row.getRowNum() == 0) return;
|
||||
if (!isEmpty(row))
|
||||
rates.add(mapToEntity(row));
|
||||
});
|
||||
|
||||
return rates;
|
||||
}
|
||||
|
||||
private boolean isEmpty(Row row) {
|
||||
|
||||
for (Cell cell : row) {
|
||||
if (cell.getCellType() != CellType.BLANK) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private MatrixRate mapToEntity(Row row) {
|
||||
MatrixRate entity = new MatrixRate();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
package de.avatic.lcc.service.excelMapper;
|
||||
|
||||
import de.avatic.lcc.excelmodel.ExcelNode;
|
||||
import de.avatic.lcc.model.bulk.*;
|
||||
import de.avatic.lcc.model.bulk.BulkInstruction;
|
||||
import de.avatic.lcc.model.bulk.BulkInstructionType;
|
||||
import de.avatic.lcc.model.bulk.HiddenTableType;
|
||||
import de.avatic.lcc.model.bulk.header.HiddenCountryHeader;
|
||||
import de.avatic.lcc.model.bulk.header.NodeHeader;
|
||||
import de.avatic.lcc.model.country.Country;
|
||||
|
|
@ -11,10 +13,7 @@ import de.avatic.lcc.repositories.NodeRepository;
|
|||
import de.avatic.lcc.repositories.country.CountryRepository;
|
||||
import de.avatic.lcc.service.bulk.helper.ConstraintGenerator;
|
||||
import de.avatic.lcc.service.bulk.helper.HeaderGenerator;
|
||||
import org.apache.poi.ss.usermodel.CellStyle;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -94,13 +93,29 @@ public class NodeExcelMapper {
|
|||
headerGenerator.validateHeader(sheet, NodeHeader.class);
|
||||
|
||||
var nodes = new ArrayList<BulkInstruction<ExcelNode>>();
|
||||
|
||||
System.out.println(sheet.getLastRowNum());
|
||||
|
||||
sheet.forEach(row -> {
|
||||
if (row.getRowNum() == 0) return;
|
||||
nodes.add(mapToEntity(row));
|
||||
|
||||
if (!isEmpty(row))
|
||||
nodes.add(mapToEntity(row));
|
||||
});
|
||||
return nodes;
|
||||
}
|
||||
|
||||
private boolean isEmpty(Row row) {
|
||||
|
||||
for(Cell cell : row) {
|
||||
if (cell.getCellType() != CellType.BLANK) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private BulkInstruction<ExcelNode> mapToEntity(Row row) {
|
||||
ExcelNode entity = new ExcelNode();
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,9 @@ package de.avatic.lcc.service.excelMapper;
|
|||
|
||||
|
||||
import de.avatic.lcc.excelmodel.ExcelPackaging;
|
||||
import de.avatic.lcc.model.bulk.*;
|
||||
import de.avatic.lcc.model.bulk.BulkInstruction;
|
||||
import de.avatic.lcc.model.bulk.BulkInstructionType;
|
||||
import de.avatic.lcc.model.bulk.HiddenTableType;
|
||||
import de.avatic.lcc.model.bulk.header.HiddenNodeHeader;
|
||||
import de.avatic.lcc.model.bulk.header.PackagingHeader;
|
||||
import de.avatic.lcc.model.packaging.Packaging;
|
||||
|
|
@ -87,7 +89,7 @@ public class PackagingExcelMapper {
|
|||
|
||||
private void mapDimensionToCell(Cell cell, Optional<PackagingDimension> packaging, Function<PackagingDimension, Integer> provider) {
|
||||
if (packaging.isPresent())
|
||||
cell.setCellValue(packaging.get().getDimensionUnit().convertFromMM(provider.apply(packaging.get())));
|
||||
cell.setCellValue(packaging.get().getDimensionUnit().convertFromMM(provider.apply(packaging.get())));
|
||||
else cell.setBlank();
|
||||
}
|
||||
|
||||
|
|
@ -136,12 +138,24 @@ public class PackagingExcelMapper {
|
|||
|
||||
var packaging = new ArrayList<BulkInstruction<ExcelPackaging>>();
|
||||
sheet.forEach(row -> {
|
||||
if(row.getRowNum() == 0) return;
|
||||
packaging.add(mapToEntity(row, propertyMappingIds));
|
||||
if (row.getRowNum() == 0) return;
|
||||
if (!isEmpty(row))
|
||||
packaging.add(mapToEntity(row, propertyMappingIds));
|
||||
});
|
||||
return packaging;
|
||||
}
|
||||
|
||||
private boolean isEmpty(Row row) {
|
||||
|
||||
for (Cell cell : row) {
|
||||
if (cell.getCellType() != CellType.BLANK) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private Map<Integer, String> getPropertyHeaders(Row row) {
|
||||
var propertyMappingIds = packagingPropertiesRepository.listTypes().stream().map(PropertyType::getExternalMappingId).toList();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue