数据清洗器 (dataCleaner)
数据加载器 (dataLoader)
脏数据处理器 (dirtyHandler)
计数器
totalRows:总行数计数器(线程安全)sheetRows:当前工作表行数计数器(线程安全)sheetFailRows:当前工作表失败行数计数器(线程安全)invoke(Map<Integer, String> rawData, AnalysisContext context)执行流程:
初始化处理
rowIndexcurrentSheet模板信息获取
templateIdTableInfofuncRegx 和表头行号 lineNo懒加载组件
dataLoaderdataCleaner数据分类处理
lineNo > rowIndex):收集表头字段到 headerListlineNo == rowIndex):传递表头给清洗器进行字段映射准备lineNo < rowIndex):执行清洗逻辑数据清洗
dataCleaner.clean() 方法清洗数据dataLoader.write() 写入数据dirtyHandler.handle() 处理脏数据异常处理
doAfterAllAnalysed(AnalysisContext context)执行流程:
资源清理
统计信息更新
dataNumfailNumFILE_CLEAN_COMPLETEextractSheetList完成处理
finish() 方法状态重置
dataCleaner、dataLoader、currentSheetheaderList日志记录
AtomicInteger 确保计数器的线程安全CleanErrorLog 对象,记录错误信息dirtyHandler.handle() 方法处理脏数据doAfterAllAnalysed() 中调用 dirtyHandler.flush() 批量处理脏数据[原始数据行] → [invoke()方法]
↓
[设置当前工作表] → [获取模板信息]
↓
[懒加载组件] → [数据分类处理]
↓
[数据清洗] → [处理清洗结果]
↓
[写入数据/处理脏数据]
[所有数据处理完成] → [doAfterAllAnalysed()方法]
↓
[资源清理] → [统计信息更新]
↓
[完成处理] → [状态重置]