使用Cursor生成【财务对账系统】前后端代码

背景说明

最近公司财务的同事跟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 解析流程设计

  1. 文件类型识别: 根据文件扩展名(.xlsx/.csv)选择解析器
  2. 编码检测: CSV文件支持GBK/UTF-8编码自动检测
  3. 数据清洗: 去除控制字符、空值处理、格式标准化
  4. 映射转换: 外部字段映射到统一数据模型
  5. 门店映射: 通过ShopChannelMappingService获取金蝶门店信息
  6. 异常处理: 记录解析失败的日志,支持部分成功

3.1.3 关键特性

  • 多格式支持: Excel(.xlsx/.xls) + CSV
  • 编码自适应: 支持GBK、UTF-8等编码
  • 批量处理: 分批解析大文件,避免内存溢出
  • 进度回调: 实时反馈解析进度
  • 错误恢复: 单行解析失败不影响整体流程

3.2 一键导入功能设计

3.2.1 一键导入架构

3.2.2 一键导入流程

  1. 文件夹识别: 自动识别包含各渠道账单的文件夹结构
  2. 渠道检测: 根据文件夹名称自动识别支持的渠道类型
  3. 批量解析: 按渠道顺序依次解析所有账单文件
  4. 数据汇总: 自动按门店维度汇总各渠道财务数据
  5. 报表生成: 生成符合金蝶系统格式的Excel汇总报表
  6. 进度跟踪: 实时显示导入进度和完成状态

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 任务执行流程

  1. 任务创建: 根据渠道类型和文件夹路径创建任务记录
  2. 异步执行: 使用CompletableFuture异步处理,避免阻塞用户界面
  3. 进度跟踪: 通过ProgressCallback实时更新任务进度
  4. 状态管理: 任务状态包括PENDING、RUNNING、SUCCESS、FAILED
  5. 错误处理: 捕获异常并记录错误信息
  6. 结果通知: 任务完成后更新最终状态

3.2.3 主任务-子任务模式

  • 主任务: 一键导入所有渠道账单的顶层任务
  • 子任务: 每个渠道的独立导入任务
  • 依赖关系: 子任务失败不影响其他子任务执行
  • 进度聚合: 主任务进度基于子任务完成情况计算

3.4 日志管理模块设计

3.4.1 日志架构

3.4.2 日志分类

  1. 映射失败日志: 门店映射关系未找到的记录
  2. 解析错误日志: 文件解析过程中的异常记录
  3. 数据异常日志: 数据格式不正确或缺失的记录
  4. 系统操作日志: 用户操作和系统运行状态记录

3.4.3 核心特性

  • 实时记录: 处理过程中实时记录错误信息
  • 分类统计: 按错误类型和渠道统计错误数量
  • 详细追踪: 记录具体的错误原因和解决方案
  • 导出功能: 支持错误日志导出,便于问题分析

3.5 门店映射模块设计

3.5.1 映射架构

3.3.2 映射规则设计

  1. 唯一标识: 使用金蝶门店编码(kingdeeShopCode)作为唯一标识
  2. 渠道映射: 每个渠道门店名称映射到对应的金蝶门店
  3. 数据标准化: 统一门店名称、公司主体、部门编码等字段
  4. 自动匹配: 支持模糊匹配和精确匹配两种模式
  5. 批量导入: 支持Excel批量导入映射关系

3.3.3 核心特性

  • 一对多映射: 一个金蝶门店可对应多个渠道门店
  • 数据一致性: 确保各渠道数据能正确关联到金蝶门店
  • 灵活配置: 支持手动添加和修改映射关系
  • 数据验证: 映射关系创建时的数据完整性检查

3.6 账单汇总模块设计

3.6.1 汇总架构

3.4.2 汇总流程设计

  1. 数据聚合: 根据时间范围和门店维度聚合财务数据
  2. 渠道汇总: 按门店汇总各渠道的应收金额、佣金、配送费等
  3. 模板生成: 使用预定义Excel模板生成金蝶系统导入格式
  4. 文件输出: 将聚合数据写入Excel文件
  5. 任务跟踪: 异步执行导出任务,实时更新进度

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后,我们程序员可以跨职能做很多事情了。

相关推荐
饭碗的彼岸one3 小时前
C++ 并发编程:异步任务
c语言·开发语言·c++·后端·c·异步
会豪3 小时前
工业仿真(simulation)--仿真引擎,离散事件仿真(1)
后端
QT 小鲜肉3 小时前
【QT随笔】结合应用案例一文完美概括QT中的队列(Queue)
c++·笔记·qt·学习方法·ai编程
Java微观世界3 小时前
匿名内部类和 Lambda 表达式为何要求外部变量是 final 或等效 final?原理与解决方案
java·后端
SimonKing3 小时前
全面解决中文乱码问题:从诊断到根治
java·后端·程序员
几颗流星4 小时前
Java 中使用 CountDownLatch 增加线程竞争,帮助复现并发问题
后端
郑洁文4 小时前
基于SpringBoot的天气预报系统的设计与实现
java·spring boot·后端·毕设
optimistic_chen4 小时前
【Java EE进阶 --- SpringBoot】Spring DI详解
spring boot·笔记·后端·spring·java-ee·mvc·di
Java水解4 小时前
【MySQL】数据库基础
后端·mysql