|
|
@@ -235,7 +235,10 @@ public class SalaryImportAction extends ExcelImport {
|
|
|
value = getCellValue(cell);
|
|
|
}
|
|
|
if (j < headers.size()) {
|
|
|
- dataMap.put(headers.get(j), value);
|
|
|
+ String headerName = headers.get(j);
|
|
|
+ // 应用字段别名映射
|
|
|
+ String mappedHeader = mapFieldAlias(headerName);
|
|
|
+ dataMap.put(mappedHeader, value);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -431,6 +434,50 @@ public class SalaryImportAction extends ExcelImport {
|
|
|
return importPageUrl;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 字段别名映射:将不同的列名映射到统一的字段名
|
|
|
+ * @param fieldName Excel中的列名
|
|
|
+ * @return 映射后的标准字段名
|
|
|
+ */
|
|
|
+ private String mapFieldAlias(String fieldName) {
|
|
|
+ if (fieldName == null || fieldName.isEmpty()) {
|
|
|
+ return fieldName;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 去除所有空白字符(包括换行、空格等)
|
|
|
+ String cleanName = fieldName.trim().replaceAll("\\s+", "");
|
|
|
+
|
|
|
+ // 定义字段别名映射关系
|
|
|
+ Map<String, String> aliasMap = new HashMap<String, String>();
|
|
|
+
|
|
|
+ // 实际出勤天数 / 实出勤天数 → actual_attend_days
|
|
|
+ aliasMap.put("实际出勤天数", "实际出勤天数");
|
|
|
+ aliasMap.put("实出勤天数", "实际出勤天数");
|
|
|
+
|
|
|
+ // 节假日加班小时 / 节假日加班 → holiday_overtime_hours
|
|
|
+ aliasMap.put("节假日加班小时", "节假日加班小时");
|
|
|
+ aliasMap.put("节假日加班", "节假日加班小时");
|
|
|
+
|
|
|
+ // 失业保险 / 失业险 → unemployment_insurance
|
|
|
+ aliasMap.put("失业保险", "失业保险");
|
|
|
+ aliasMap.put("失业险", "失业保险");
|
|
|
+
|
|
|
+ // 基本医疗 / 医疗 → medical_insurance
|
|
|
+ aliasMap.put("基本医疗", "基本医疗");
|
|
|
+ aliasMap.put("医疗", "基本医疗");
|
|
|
+
|
|
|
+ // 大病医疗 / 大病保险 → critical_illness
|
|
|
+ aliasMap.put("大病医疗", "大病医疗");
|
|
|
+ aliasMap.put("大病保险", "大病医疗");
|
|
|
+
|
|
|
+ // 如果找到映射,返回标准字段名;否则返回原字段名
|
|
|
+ if (aliasMap.containsKey(cleanName)) {
|
|
|
+ return aliasMap.get(cleanName);
|
|
|
+ }
|
|
|
+
|
|
|
+ return cleanName;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 判断是否是完整的字段名(用于区分水平拆分和垂直拆分)
|
|
|
*/
|