客户为智能硬件生产与出货企业。每台设备、每箱货物在产线与仓储环节都对应一个以箱号命名的文件夹(如 DH160-3、DH160-4),出货前需按 Excel 台账里的序号重新整理,以便按顺序打包、抽检和归档。此前改名全靠人工在资源管理器里逐个操作,几百个箱子容易漏改、错改甚至重名覆盖,事后也无法追溯“几号对应哪个箱”;台账在 Excel 里、改名动作在磁盘上,中间没有工具打通。因此立项做一款 Windows 桌面工具,把台账直接作用到磁盘上,让批量改名可控、可审计、可回滚。
工具共六个模块。①表格读取:自研 xlsx 解析器读取 OOXML(共享字符串、工作表、单元格类型),支持多工作表择一,按 numFmt 还原单元格显示文本(如补零 001、千分位、百分比、日期),并自动识别跳过「序号/箱号」表头行。②列方向与映射:默认 B→A(用序号覆盖箱号),可一键反向切到 A→B,切换后立即作废预演,防止方向弄反。③名称处理:做规范化(去掉首尾空格与点号、全半角统一)和合法性校验(非法字符、CON/PRN 保留名、超长路径、纯数字告警),显示值与实际值不一致时在说明列打标提示。④定位与冲突检测:按文件夹名在指定根目录(可递归、深度上限 5 层)匹配,0 命中或 ≥2 命中一律跳过,目标名被本批之外的目录占用时跳过并报告,绝不覆盖。⑤执行与回滚:两阶段改名(原名→临时名→新名)消除交叉与链式依赖,每个操作都写入 journal.jsonl,可一键逆序回滚最近一次执行。⑥界面与报告:预演结果三态着色(待改/跳过/拦截),执行前二次确认,执行中显示进度并可取消,双击行打开父目录,执行后自动生成「改名对照表」xlsx 作为箱号台账,报告可按需导出。主流程:选表格→选根目录→确认方向→预演→执行→(必要时)回滚。
我独立完成了从需求分析到交付的全过程:先做需求锁定(《需求锁定卡 v1.0》+技术方案 v1.1,锁定 10 项约束、6 条默认假设、3 条硬门槛),再完成架构设计、核心编码、自检用例与打包。技术栈为 C#、.NET Framework 4.8、WinForms,不依赖任何 NuGet 包:xlsx 读取、数值格式渲染、测试运行器全部手写,用 csc 直接编译出零依赖单文件 exe(约 925 KB,Win10/11 免安装可跑)。架构分为 Core(Table/Naming/Planning/Execution/FileSystem/Report 六层,纯逻辑无 UI 依赖)与 App(界面层),预演与执行共用同一套 Planner 结果,保证“看到什么就执行什么”。亮点有三:一是两阶段改名状态机,先全量落到 __rtmp_{runId}_{序号} 临时名再统一落新名,从根本上解决 A↔B 互换与 A→B→C 链式改名,并对已执行批次做幂等识别(旧名没了、新名已在→跳过);二是可回滚的日志设计,每步写盘动作先写 journal.jsonl 再执行,回滚按逆序两阶段还原,进程被杀也能接管;三是 PathGuard 范围锁定,路径归一化后必须落在根目录之下,表里写 ..\..\Windows 会被拦截。难点在于冲突判定的边界:最初的「目标已存在即冲突」会把「占用者正是本批待移走项」的交叉场景全部误拦,引入批内让位逻辑后才修正;此外自研 xlsx 解析还要处理共享字符串、日期序列号与自定义格式假前导零(显示 001 而实际是 1)的陷阱,最终 21 条自检用例(含 T2 交叉、T3 链式、T9 幂等、T11 越界)全部通过。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论