Browse Source

fix: 优化合并单元格问题

chenjianhua 5 months ago
parent
commit
37547c7781

+ 9 - 1
service-daq/src/main/java/com/simuwang/daq/service/NavEmailParser.java

@@ -423,7 +423,15 @@ public class NavEmailParser extends AbstractEmailParser {
         long rowNumCount = fieldPositionMap.values().stream().map(Pair::getKey).distinct().count();
         if (rowNumCount > 1) {
             // 存在合并单元格的方式 -> 日期字段所在位置可能会存在错误
-            fieldPositionMap.remove(EmailFieldConst.PRICE_DATE);
+            Pair<Integer, Integer> priceDatePair = fieldPositionMap.get(EmailFieldConst.PRICE_DATE);
+            //补丁,如果存在合并单元格,判断日期所在的行是否有其他字段列,如果存在,则表名是行格式数据,而不是其他格式数据
+            if(priceDatePair != null){
+                List<Integer> pairKey = fieldPositionMap.values().stream().map(Pair::getKey).collect(Collectors.toList());
+                List<Integer> priceDateKey = pairKey.stream().filter(e -> e == priceDatePair.getKey()).collect(Collectors.toList());
+                if(priceDateKey.size() < 2){
+                    fieldPositionMap.remove(EmailFieldConst.PRICE_DATE);
+                }
+            }
         }
         Map<String, Integer> fieldRowMap = MapUtil.newHashMap();
         for (Map.Entry<String, Pair<Integer, Integer>> fieldPositionEntry : fieldPositionMap.entrySet()) {