24match/java-shirley-tools

🍐 's tools

★ 0Forks 0JavaGitHub ↗Compare

README

Excel 数据处理工具(第二版)

DOU+ 订单明细数据处理工具,支持视频 ID 筛选和新模版格式输出。

功能特性

第二版新增功能

  • 📝 视频 ID 筛选:用户可填写需要处理的视频 ID 列表(支持逗号分隔或换行分隔)
  • 🎯 智能匹配:根据用户填写的视频 ID 从汇总表中筛选匹配的数据行
  • 📋 新模版输出:生成符合业务需求的 11 列模版格式
  • 📊 匹配统计:显示填写数量和匹配成功数量,列出未匹配的 ID

第一版功能(保留)

  • 🎯 视频 ID 提取:从抖音视频链接中自动提取视频 ID
  • 📊 互动总量计算:自动计算点赞量 + 评论量 + 分享量总和
  • 🌐 Web 界面:简洁易用的文件上传下载界面
  • ⚡ 快速处理:支持批量数据处理
  • 🔄 向后兼容:不填写视频 ID 时按第一版流程处理全部数据

技术栈

  • 后端:Java 17 + Spring Boot 3.2
  • Excel 处理:Apache POI 5.2.5
  • 前端:HTML + CSS + JavaScript(原生)
  • 构建工具:Maven

快速开始

环境要求

  • JDK 17+
  • Maven 3.8+

构建项目

cd excel-processor
mvn clean package

运行应用

java -jar target/excel-processor-0.0.1-SNAPSHOT.jar

或者使用 Maven:

mvn spring-boot:run

访问应用

打开浏览器访问:http://localhost:8080

使用说明(第二版)

完整流程

  1. 填写视频 ID:在文本框中填写需要处理的视频 ID
    • 支持逗号分隔:123,234,345
    • 支持换行分隔:每行一个 ID
    • 留空则处理全部数据(第一版模式)
  2. 上传汇总文件:点击上传区域或拖拽 Excel 文件到上传框
  3. 开始处理:点击"开始处理"按钮
  4. 查看匹配统计:显示填写数量、匹配成功数量和未匹配的 ID
  5. 下载结果:处理完成后点击"下载处理后的文件"

输入文件要求(汇总表)

Excel 文件应包含以下列(列名需完全匹配):

列名 说明 是否必需
视频 ID 视频 ID(如已有则直接使用) 否
视频链接 抖音视频链接(用于提取视频 ID 或匹配) 是
作者名称 视频作者名称 否
视频标题 视频标题 否
下单时间 订单创建时间 否
状态 订单状态 否
预算(元) 投放预算 否
消耗(元) 实际消耗 否
投放目标 投放目标类型 否
视频播放量 视频播放次数 否
视频点赞量 视频点赞数量 是(用于计算互动)
视频评论量 视频评论数量 是(用于计算互动)
视频分享量 视频分享数量 是(用于计算互动)

输出文件(新模版格式)

处理后的 Excel 文件包含以下 11 列:

列名 说明
视频 ID 匹配的视频 ID
视频链接 原始视频链接
作者名称 视频作者名称
视频标题 视频标题
下单时间 订单创建时间
状态 订单状态
预算(元) 投放预算
消耗(元) 实际消耗
投放目标 投放目标类型
视频播放量 视频播放次数
互动 点赞量 + 评论量 + 分享量

API 端点

第二版 API

方法 路径 参数 描述
POST /api/upload file, videoIds(可选) 上传并处理 Excel 文件,videoIds 为视频 ID 列表
GET /api/download/{fileId} - 下载处理后的文件

响应格式(带匹配统计)

{
  "fileId": "uuid-string",
  "fileName": "processed_file.xlsx",
  "success": true,
  "message": "处理成功",
  "totalCount": 10,        // 用户填写的视频 ID 总数
  "matchedCount": 8,       // 匹配成功的数量
  "unmatchedIds": ["999", "888"]  // 未匹配的 ID 列表
}

配置说明

配置文件位于 src/main/resources/application.yml:

server:
  port: 8080

spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB

app:
  upload:
    temp-dir: ${java.io.tmpdir}/excel-processor
    retention-hours: 24

项目结构

excel-processor/
├── src/main/java/com/example/excelprocessor/
│   ├── ExcelProcessorApplication.java    # 启动类
│   ├── controller/
│   │   └── FileController.java           # REST 控制器
│   ├── service/
│   │   ├── ExcelProcessService.java      # 服务接口
│   │   └── ExcelProcessServiceImpl.java  # 服务实现
│   ├── model/
│   │   ├── ProcessResult.java            # 结果封装(第二版新增匹配统计字段)
│   │   └── VideoIdInput.java             # 视频 ID 输入模型(第二版新增)
│   ├── util/
│   │   ├── DataExtractor.java            # 数据提取工具
│   │   ├── FileValidator.java            # 文件验证器
│   │   ├── VideoIdParser.java            # 视频 ID 解析工具(第二版新增)
│   │   └── VideoIdMatcher.java           # 视频 ID 匹配工具(第二版新增)
│   ├── exception/
│   │   ├── MissingVideoIdsException.java # 缺少视频 ID 异常(第二版新增)
│   │   └── NoMatchedDataException.java   # 无匹配数据异常(第二版新增)
│   └── config/
│       └── GlobalExceptionHandler.java   # 全局异常处理
├── src/main/resources/
│   ├── static/
│   │   ├── index.html                    # 主页面(第二版新增视频 ID 输入区域)
│   │   ├── style.css                     # 样式文件
│   │   └── app.js                        # 前端逻辑
│   └── application.yml                   # 应用配置
├── src/test/java/...                     # 测试代码
└── pom.xml                               # Maven 配置

测试

运行所有测试:

mvn test

许可证

MIT License

Contributors

24match

Issues