立项背景和目标因客户投诉 “出货数量与测试统计数量不一致”,导致订单交付信任风险,故立项开发此 Windows 工具,核心目标是标准化 CSV 测试数据的统计、去重与校验流程,统一出货与测试数据的统计口径,彻底解决人工统计的误差问题。
软件功能、核心功能模块的介绍核心模块包括:
CSV 文件批量处理模块:支持多文件 / 大文件的流式读取,避免内存过载;
数据去重统计模块:按测试结果的 16 进制唯一值去重良品数量,同时保留不良品的原始数量,兼顾 “数据唯一性” 与 “不良品全量统计” 需求;
数据校验模块:自动校验主工单号的唯一性,避免重复录入数据库;
数据库提交模块:将 “数据处理” 与 “数据入库” 拆分为独立操作,支持人工确认结果后再提交,降低错误风险。
业务流程、功能路径描述
用户操作路径:点击 “一键处理”→选择 CSV 文件目录→工具自动提取产品型号、主工单号并查询测试坐标→后台线程完成数据去重 / 统计→结果显示在只读文本框(避免人工误改)→确认数据无误后,点击 “数据提交” 完成数据库录入,全流程无需手动计算,实现 “零人工干预” 的标准化统计
整体架构和设计思路,不同模块使用的技术栈
采用 Windows 窗体应用架构,分为 3 层:
UI 层:基于 DevExpress 控件实现交互(按钮、只读文本框),保障操作简洁性;
业务逻辑层:拆分 “文件处理、数据统计、数据库操作” 为独立模块,通过类级变量实现模块间数据共享;
数据层:通过ADO.NET连接 SQL Server 数据库,实现数据的持久化与唯一性校验。
核心技术点:使用 BackgroundWorker 实现后台线程(避免 UI 阻塞)、通过 HashSet 实现毫秒级数据去重、利用控件只读属性防止人工误操作。
“我” 的负责模块和结果(尽可能量化)
独立完成工具的全流程开发,包括 UI 控件布局、CSV 流式处理逻辑、数据去重算法、数据库重复校验功能;最终实现:
单批次处理 20 + 个 CSV 文件(合计 5 万 + 行测试数据)的耗时≤10 秒;
数据统计的准确率达 100%,彻底解决了原人工统计的误差问题;
工具上线后,客户关于 “数量不一致” 的投诉率降至 0。
“我” 遇到的难点、坑,和解决方案
难点 1:大数据量处理导致 UI 阻塞
解决方案:引入 BackgroundWorker 后台线程,将耗时的 CSV 处理逻辑与 UI 线程分离,保障界面始终响应;
难点 2:良品数据重复统计
解决方案:使用 HashSet 存储测试结果的 16 进制唯一值,实现毫秒级去重,确保良品数量的唯一性;
难点 3:人工误改统计结果
解决方案:将结果显示的文本框设为 “只读” 状态,仅允许工具自动填充数据;
难点 4:数据库重复录入主工单号
解决方案:在 “数据提交” 前增加数据库查询,校验主工单号的唯一性,禁止重复提交