From 2a3e906a1addc2687924bab63bb0272ceb4c2e28 Mon Sep 17 00:00:00 2001 From: lilong Date: Sat, 30 Mar 2024 08:15:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E5=8F=AA=E6=94=AF=E6=8C=81column?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/impl/DataSheetImporter.java | 31 +++++-------------- 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/src/main/java/cn/axzo/pokonyan/client/impl/DataSheetImporter.java b/src/main/java/cn/axzo/pokonyan/client/impl/DataSheetImporter.java index d3631e6..e52445b 100644 --- a/src/main/java/cn/axzo/pokonyan/client/impl/DataSheetImporter.java +++ b/src/main/java/cn/axzo/pokonyan/client/impl/DataSheetImporter.java @@ -25,7 +25,6 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; @@ -126,13 +125,10 @@ public class DataSheetImporter extends DataSheetClient.ImporterBuilder { // 聚合来自入参和文件批注的meta信息;如果都存在,使用入参的meta覆盖文件批注的meta this.meta = mergeMeta(this.meta, parseMetaFromData(dataListener)); - filterHeadMap(dataListener); filterLines(dataListener); - validateHeaders(dataListener); validateMeta(dataListener); - List headers = parseHeaders(dataListener); List lines = parseLines(dataListener); if (!includeLineErrors) { // 没有设置includeLineErrors时,抛第一个发现的异常 @@ -154,11 +150,10 @@ public class DataSheetImporter extends DataSheetClient.ImporterBuilder { .scene(scene) .templateCode(Optional.ofNullable(meta).map(DataSheetClient.Meta::getTemplateCode).orElse(null)) .version(Optional.ofNullable(meta).map(DataSheetClient.Meta::getVersion).orElse(null)) - .headers(headers) .lines(lines) .headerRowCount(1) .rowCount(lines.size()) - .columnCount(headers.size()) + .columnCount(lines.size()) .meta(meta) .elapsedMillis(stopwatch.elapsed(TimeUnit.MILLISECONDS)) .build(); @@ -341,9 +336,9 @@ public class DataSheetImporter extends DataSheetClient.ImporterBuilder { } private List parseHeaders(NoModelDataListener dataListener) { - return dataListener.getHeadMap().keySet().stream() + return dataListener.getHeadMap().entrySet().stream() .sorted() - .map(key -> Strings.nullToEmpty(dataListener.getHeadMap().get(key))) + .map(entry -> Strings.nullToEmpty(dataListener.getHeadMap().get(entry.getKey()))) .collect(Collectors.toList()); } @@ -360,8 +355,8 @@ public class DataSheetImporter extends DataSheetClient.ImporterBuilder { // 根据meta来校验cell的类型 Map headerMap = dataListener.getHeadMap(); - boolean cellTypeColumn = meta.getResolveRowType() == DataSheetClient.ResolveRowType.COLUMN; - Map cellMetaMap = resolveCellMetaMap(cellTypeColumn); + Map cellMetaMap = Maps.uniqueIndex(meta.getCellMetas(), + DataSheetClient.CellMeta::getColumn);; List> lines = dataListener.getLines(); return IntStream.range(0, lines.size()) @@ -371,8 +366,7 @@ public class DataSheetImporter extends DataSheetClient.ImporterBuilder { Map> convertRespMap = headerMap.entrySet().stream() .map(entry -> { Integer columnIndex = entry.getKey(); - String header = entry.getValue(); - DataSheetClient.CellMeta cellMeta = cellTypeColumn ? cellMetaMap.get(columnIndex.toString()) : cellMetaMap.get(header); + DataSheetClient.CellMeta cellMeta = cellMetaMap.get(columnIndex); return convertType(cellMeta, line.get(columnIndex), lineIndex, columnIndex); }) .collect(Collectors.groupingBy(ColumnConvertResp::getSuccess)); @@ -393,18 +387,6 @@ public class DataSheetImporter extends DataSheetClient.ImporterBuilder { .collect(Collectors.toList()); } - - private Map resolveCellMetaMap(boolean cellTypeColumn) { - if (BooleanUtils.isTrue(cellTypeColumn)) { - // 根据列顺序解析 - return Maps.uniqueIndex(meta.getCellMetas(), - cellMeta -> cellMeta.getColumn().toString()); - } - // 根据列名字解析 - return Maps.uniqueIndex(meta.getCellMetas(), - DataSheetClient.CellMeta::getName); - } - private ColumnConvertResp convertType(DataSheetClient.CellMeta cellMeta, String rawValue, int rowIndex, int columnIndex) { try { return ColumnConvertResp.builder() @@ -440,6 +422,7 @@ public class DataSheetImporter extends DataSheetClient.ImporterBuilder { Set headerNames = ImmutableSet.copyOf(headMap.values()); if (headerNames.size() != headMap.size()) { List columnNames = headMap.values().stream() + .filter(Objects::nonNull) .collect(Collectors.groupingBy(Function.identity())) .entrySet().stream() .filter(grouped -> grouped.getValue().size() > 1)