物料导入繁体解析1
This commit is contained in:
@@ -13,7 +13,9 @@ import org.apache.poi.ss.usermodel.WorkbookFactory;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 物料主数据导入:支持繁体中文表头的 Excel 解析。
|
||||
@@ -23,6 +25,19 @@ public final class MaterialBaseInfoImportExcelUtil {
|
||||
private MaterialBaseInfoImportExcelUtil() {
|
||||
}
|
||||
|
||||
/** 客户模板常见表头别名 → 系统 @Excel 标准表头 */
|
||||
private static final Map<String, String> HEADER_ALIASES = new HashMap<>();
|
||||
|
||||
static {
|
||||
HEADER_ALIASES.put("条形码", "物料条形码");
|
||||
HEADER_ALIASES.put("保質期(天)", "保质期 单位:天");
|
||||
HEADER_ALIASES.put("保质期(天)", "保质期 单位:天");
|
||||
HEADER_ALIASES.put("净重(kg)", "净重 单位:千克");
|
||||
HEADER_ALIASES.put("淨重(kg)", "净重 单位:千克");
|
||||
HEADER_ALIASES.put("体积(m³)", "体积 单位:立方米");
|
||||
HEADER_ALIASES.put("體積(m³)", "体积 单位:立方米");
|
||||
}
|
||||
|
||||
public static List<MaterialBaseInfoDTO> importRows(InputStream is) throws Exception {
|
||||
Workbook workbook = WorkbookFactory.create(is);
|
||||
try {
|
||||
@@ -54,7 +69,9 @@ public final class MaterialBaseInfoImportExcelUtil {
|
||||
if (StringUtils.isBlank(value)) {
|
||||
continue;
|
||||
}
|
||||
cell.setCellValue(ZhTextNormalizeUtil.normalizeExcelHeader(value));
|
||||
String normalized = ZhTextNormalizeUtil.normalizeExcelHeader(value);
|
||||
String alias = HEADER_ALIASES.get(normalized);
|
||||
cell.setCellValue(alias != null ? alias : normalized);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,14 +49,25 @@ public final class ZhTextNormalizeUtil {
|
||||
if (a == null || b == null) {
|
||||
return false;
|
||||
}
|
||||
return toSimple(a).equals(toSimple(b));
|
||||
return normalizeNameKey(a).equals(normalizeNameKey(b));
|
||||
}
|
||||
|
||||
public static boolean textContains(String haystack, String needle) {
|
||||
if (StringUtils.isBlank(haystack) || StringUtils.isBlank(needle)) {
|
||||
return false;
|
||||
}
|
||||
return toSimple(haystack).contains(toSimple(needle));
|
||||
return normalizeNameKey(haystack).contains(normalizeNameKey(needle));
|
||||
}
|
||||
|
||||
/** 简繁体 + 全角括号等常见差异归一化,便于货主/分类名称匹配。 */
|
||||
public static String normalizeNameKey(String text) {
|
||||
if (StringUtils.isBlank(text)) {
|
||||
return text;
|
||||
}
|
||||
String s = toSimple(text.trim());
|
||||
s = s.replace('(', '(').replace(')', ')');
|
||||
s = s.replace(' ', ' ');
|
||||
return s;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user