背景说明
最近公司财务的同事跟IT提了一个需求,希望能在她本地的机器上部署一个对账管理后台,方便她录入账单后,快速生成汇总后的账单。由于需要有界面,原本是需要组里一个前端开发帮忙的,但是后面我用了Cursor后,觉得可以用它来生成前端代码。 果不其然,Cursor很靠谱,整个财务对账系统,用了3天,它就帮我搞定了。里面只有10%的代码,需要我微调一下。不得不说背后的Claude代码模型实在给力呀。
系统界面展示
登录页面

主页面

1. 系统整体架构设计
1.1 技术架构图
graph TB
subgraph "前端层"
A[Vue 3 + Element Plus]
B[JSP页面]
C[静态资源管理]
end
subgraph "控制层"
D[Spring MVC Controller]
E[参数验证]
F[异常处理]
G[登录认证]
end
subgraph "业务层"
H[Service业务逻辑]
I[文件解析器工厂]
J[任务管理服务]
K[数据聚合服务]
L[日志管理服务]
end
subgraph "数据访问层"
M[MyBatis Plus]
N[Mapper接口]
O[SQL映射文件]
end
subgraph "数据层"
P[MySQL数据库]
Q[文件系统]
end
subgraph "工具层"
R[Excel/CSV解析器]
S[异步任务处理]
T[进度回调机制]
end
A --> D
B --> D
D --> G
G --> H
D --> H
H --> I
H --> J
H --> K
H --> L
H --> M
M --> N
N --> O
O --> P
I --> R
J --> S
S --> T
R --> Q
1.2 核心模块设计
1.2.1 登录认证模块
- 功能: 用户身份验证、权限控制、会话管理
- 核心特性: 简单用户名密码登录、会话保持、权限拦截
- 业务价值: 保障系统安全,确保只有授权用户才能访问财务数据
1.2.2 渠道账单管理模块
- 功能: 支持多平台账单导入、查询、删除
- 支持渠道: 抖音团购、美团点评、云闪付、京东外卖、饿了么、美团外卖、微信、支付宝等
- 核心特性: 统一数据模型、渠道适配器模式、批量处理
- 一键导入: 财务只需将文件夹拖入系统,自动完成所有渠道账单解析和汇总,从原来的2.5天缩短到2小时
1.2.3 门店映射管理模块
- 功能: 外部渠道门店与金蝶系统门店的映射关系管理
- 核心特性: 数据标准化、映射规则配置、自动匹配
- 业务价值: 解决多渠道门店名称不统一问题,通过唯一门店编码实现数据关联
1.2.4 任务管理模块
- 功能: 异步任务创建、执行、监控、状态跟踪
- 核心特性: 主任务-子任务模式、进度回调、错误处理
1.2.5 账单汇总模块
- 功能: 多维度数据汇总、Excel报表生成
- 核心特性: 灵活聚合规则、模板化导出
- 业务价值: 按门店维度汇总各渠道财务数据,便于统一录入金蝶系统
1.2.6 日志管理模块
- 功能: 系统操作日志记录、错误信息查看、数据异常跟踪
- 核心特性: 详细日志记录、错误分类、实时查看
- 业务价值: 财务同事可及时查看错误信息并修正,提高数据处理准确性
2. 关键技术选型
2.1 后端技术栈
- 框架: Spring Boot 2.x + Spring MVC
- 数据库: MySQL 8.0 + MyBatis Plus
- 文件处理: Apache POI (Excel) + Apache Commons CSV
- 异步处理: CompletableFuture + 自定义线程池
- 日志: SLF4J + Logback
- 构建工具: Maven
- 技术语言: JAVA 17
- 部署方式: 本地部署,支持Windows 11环境
2.2 前端技术栈
- 框架: Vue 3 + Element Plus
- 页面技术: JSP + JSTL
- 样式: 自定义CSS + Element Plus主题
- 构建: 无需构建,直接引用CDN资源
2.3 设计模式应用
- 工厂模式: BillFileParserFactory - 根据渠道类型创建对应解析器
- 策略模式: 不同渠道的解析策略实现
- 模板方法模式: AbstractCsvBillParser - 定义CSV解析流程
- 观察者模式: ProgressCallback - 进度通知机制
3. 核心模块设计方案
3.1 文件解析模块设计
3.1.1 解析器架构
classDiagram
class BillFileParser {
<>
+processBillFile(Path, List~String~, ProgressCallback) List~ShopBillDetail~
}
class AbstractCsvBillParser {
<>
+processBillFile(Path, List~String~, ProgressCallback) List~ShopBillDetail~
#processRow(CSVRecord) ShopBillDetail
#getCharset() Charset
}
class AbstractExcelBillParser {
<>
+processBillFile(Path, List~String~, ProgressCallback) List~ShopBillDetail~
#processRow(Row) ShopBillDetail
}
class EleCsvBillParser {
+processRow(CSVRecord) ShopBillDetail
+getCharset() Charset
}
class JdTakeawayExcelBillParser {
+processRow(Row) ShopBillDetail
}
class BillFileParserFactory {
+getProcessor(ChannelEnum) BillFileParser
}
BillFileParser <|-- AbstractCsvBillParser
BillFileParser <|-- AbstractExcelBillParser
AbstractCsvBillParser <|-- EleCsvBillParser
AbstractExcelBillParser <|-- JdTakeawayExcelBillParser
BillFileParserFactory --> BillFileParser
3.1.2 解析流程设计
- 文件类型识别: 根据文件扩展名(.xlsx/.csv)选择解析器
- 编码检测: CSV文件支持GBK/UTF-8编码自动检测
- 数据清洗: 去除控制字符、空值处理、格式标准化
- 映射转换: 外部字段映射到统一数据模型
- 门店映射: 通过ShopChannelMappingService获取金蝶门店信息
- 异常处理: 记录解析失败的日志,支持部分成功
3.1.3 关键特性
- 多格式支持: Excel(.xlsx/.xls) + CSV
- 编码自适应: 支持GBK、UTF-8等编码
- 批量处理: 分批解析大文件,避免内存溢出
- 进度回调: 实时反馈解析进度
- 错误恢复: 单行解析失败不影响整体流程
3.2 一键导入功能设计
3.2.1 一键导入架构

3.2.2 一键导入流程
- 文件夹识别: 自动识别包含各渠道账单的文件夹结构
- 渠道检测: 根据文件夹名称自动识别支持的渠道类型
- 批量解析: 按渠道顺序依次解析所有账单文件
- 数据汇总: 自动按门店维度汇总各渠道财务数据
- 报表生成: 生成符合金蝶系统格式的Excel汇总报表
- 进度跟踪: 实时显示导入进度和完成状态
3.2.3 效率提升对比
- 传统方式: 财务需要2.5天时间手工处理各渠道账单
- 系统方式: 一键导入仅需2小时完成所有处理
- 效率提升: 处理时间缩短90%以上
- 准确性: 系统化处理减少人为错误
3.3 导入任务模块设计
3.3.1 任务架构
classDiagram
class BillImportTaskEntity {
+Long id
+String taskName
+String channelType
+String folderPath
+String status
+Integer progress
+String message
+String taskType
+Long parentTaskId
}
class BillImportTaskService {
+createTask(String, String, String) Long
+createMainTask(String, String) Long
+createSubTask(Long, String, String, String) Long
+updateTaskStatus(Long, String, Integer, String) void
+updateTaskError(Long, String) void
}
class BillParserService {
+parseSingleChannelBills(String, ChannelEnum, ProgressCallback) CompletableFuture~Void~
+parseAllBills(String, ProgressCallback) CompletableFuture~Void~
}
class ProgressCallback {
<>
+onProgress(Integer, String) void
+onFolderStatusUpdate(String, String) void
}
BillImportTaskService --> BillImportTaskEntity
BillParserService --> ProgressCallback
BillImportTaskService --> BillParserService
3.2.2 任务执行流程
- 任务创建: 根据渠道类型和文件夹路径创建任务记录
- 异步执行: 使用CompletableFuture异步处理,避免阻塞用户界面
- 进度跟踪: 通过ProgressCallback实时更新任务进度
- 状态管理: 任务状态包括PENDING、RUNNING、SUCCESS、FAILED
- 错误处理: 捕获异常并记录错误信息
- 结果通知: 任务完成后更新最终状态
3.2.3 主任务-子任务模式
- 主任务: 一键导入所有渠道账单的顶层任务
- 子任务: 每个渠道的独立导入任务
- 依赖关系: 子任务失败不影响其他子任务执行
- 进度聚合: 主任务进度基于子任务完成情况计算
3.4 日志管理模块设计
3.4.1 日志架构

3.4.2 日志分类
- 映射失败日志: 门店映射关系未找到的记录
- 解析错误日志: 文件解析过程中的异常记录
- 数据异常日志: 数据格式不正确或缺失的记录
- 系统操作日志: 用户操作和系统运行状态记录
3.4.3 核心特性
- 实时记录: 处理过程中实时记录错误信息
- 分类统计: 按错误类型和渠道统计错误数量
- 详细追踪: 记录具体的错误原因和解决方案
- 导出功能: 支持错误日志导出,便于问题分析
3.5 门店映射模块设计
3.5.1 映射架构

3.3.2 映射规则设计
- 唯一标识: 使用金蝶门店编码(kingdeeShopCode)作为唯一标识
- 渠道映射: 每个渠道门店名称映射到对应的金蝶门店
- 数据标准化: 统一门店名称、公司主体、部门编码等字段
- 自动匹配: 支持模糊匹配和精确匹配两种模式
- 批量导入: 支持Excel批量导入映射关系
3.3.3 核心特性
- 一对多映射: 一个金蝶门店可对应多个渠道门店
- 数据一致性: 确保各渠道数据能正确关联到金蝶门店
- 灵活配置: 支持手动添加和修改映射关系
- 数据验证: 映射关系创建时的数据完整性检查
3.6 账单汇总模块设计
3.6.1 汇总架构

3.4.2 汇总流程设计
- 数据聚合: 根据时间范围和门店维度聚合财务数据
- 渠道汇总: 按门店汇总各渠道的应收金额、佣金、配送费等
- 模板生成: 使用预定义Excel模板生成金蝶系统导入格式
- 文件输出: 将聚合数据写入Excel文件
- 任务跟踪: 异步执行导出任务,实时更新进度
3.4.3 聚合规则
- 门店维度: 按金蝶门店编码聚合,确保数据唯一性
- 时间维度: 按月、季度、年度聚合
- 渠道维度: 按支付渠道分类统计各项财务指标
- 财务维度: 应收金额、佣金、配送费、打包费、平台服务费等
- 金蝶对接: 生成符合金蝶系统导入格式的Excel文件
3.4.4 核心特性
- 多维度汇总: 支持按门店、时间、渠道等多维度数据聚合
- 标准化输出: 生成符合金蝶系统要求的数据格式
- 实时计算: 基于最新数据实时生成汇总报表
- 灵活配置: 支持自定义汇总规则和输出格式
4. 前端界面设计
4.1 技术特点
- Vue 3 Composition API: 使用最新的Vue 3特性
- Element Plus: 统一的UI组件库
- 响应式设计: 支持不同屏幕尺寸
- 模块化CSS: 自定义样式与Element Plus主题结合
4.2 核心页面
- 登录页面: 用户身份验证和系统访问控制
- 账单列表页: 支持多条件查询、分页、导入导出
- 一键导入页: 拖拽文件夹实现批量导入和自动汇总
- 任务管理页: 实时查看任务执行状态和进度
- 门店映射页: 管理外部渠道与金蝶门店的映射关系
- 数据汇总页: 多维度数据统计和报表生成
- 日志查看页: 错误日志查看、统计分析和问题追踪
5. 系统优势
5.1 技术优势
- 高扩展性: 工厂模式支持新渠道快速接入
- 高性能: 异步处理 + 批量操作 + 数据库连接池
- 高可用: 完善的异常处理和日志记录
- 易维护: 清晰的分层架构和设计模式
5.2 业务优势
- 多平台支持: 统一处理13个主流支付渠道
- 数据标准化: 统一的数据模型和字段映射
- 实时监控: 任务执行状态实时跟踪
- 灵活配置: 支持门店映射规则配置
- 效率提升: 一键导入功能将处理时间从2.5天缩短到2小时
- 本地部署: 支持Windows 11本地部署,数据安全可控
- 错误追踪: 完善的日志系统帮助快速定位和解决问题
6. 未来规划
6.1 差异单检测模块
- 功能目标: 自动识别和检测各渠道账单数据中的差异单
- 业务价值: 提高财务数据准确性,减少人工核对工作量
- 预期效果: 自动发现数据不一致、重复、遗漏等问题
7. 开发经验总结
7.1 Cursor IDE使用技巧
- AI辅助编码: 利用Cursor的AI功能快速生成代码框架
- 智能重构: 使用AI建议优化代码结构
- 错误诊断: AI帮助快速定位和解决编译错误
- 代码补全: 智能代码补全提高开发效率
7.2 最佳实践
- 分层清晰: Controller-Service-Mapper三层架构
- 异常处理: 统一的异常处理机制
- 日志记录: 关键操作都有详细日志
- 数据验证: 输入参数验证和业务规则检查
- 性能优化: 批量操作、异步处理、数据库优化
7.3 业务价值总结
- 数据统一: 通过门店映射实现多渠道数据标准化
- 效率提升: 自动化处理替代手工操作,大幅提升工作效率
- 准确性保障: 系统化处理减少人为错误
- 金蝶对接: 生成标准格式数据,便于财务系统录入
8. 小结
Cursor实在太强大了,像我这种后端工程师也能开发WEB页面了,这个之前想都不敢想。且开发出来的界面还蛮好看的。这个正式目前流行的Vibe Coding【氛围编程】,也即是:用自然语言跟AI对话,然后生成代码。
后续有了Cursor后,我们程序员可以跨职能做很多事情了。