# 报关单定时下载功能 **Repository Path**: ww221123/TaskFlowPlatform ## Basic Information - **Project Name**: 报关单定时下载功能 - **Description**: 海关报关单/出口退税联/委托协议等数据下载 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-07-21 - **Last Updated**: 2026-07-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 关单任务管理平台 一个基于 Spring Boot + Vue.js 的关单下载任务管理系统,支持定时任务配置、关单数据下载、日志记录等功能。 > 📚 **快速开始**: [快速入门指南](QUICK-START.md) | [故障排除](TROUBLESHOOTING.md) > ✅ **SQL Server 2008完美支持**: 已使用JTDS驱动,无TLS限制!查看 [说明文档](说明-JTDS驱动.md) ## 界面展示 ![img.png](img.png) ## 技术栈 ### 后端 - Java 8+ - Spring Boot 2.7.14 - Spring MVC - MyBatis - Quartz (定时任务) - SQL Server 2008+ (使用JTDS驱动) ### 前端 - Vue.js 2.6 - Element UI 2.15 - Vue Router - Vuex - Axios ## 功能特性 ### 1. 任务管理 - ✅ 添加/编辑/删除关单下载任务 - ✅ 配置企业名称、企业税号、报关单号 - ✅ 设置出口日期范围、申报日期范围 - ✅ 自定义 Cron 表达式实现定时下载 - ✅ 启用/禁用任务 - ✅ 手动触发任务执行 - ✅ 查看任务执行状态 ### 2. 下载日志 - ✅ 记录每次下载任务的执行情况 - ✅ 显示下载总数、新增数量、重复数量 - ✅ 记录执行时间、执行状态 - ✅ 错误信息记录 - ✅ 日志查询和筛选 ### 3. 关单数据管理 - ✅ 查看下载的关单数据列表 - ✅ 关单数据详情查看 - ✅ 按报关单号、企业名称、日期等条件查询 - ✅ 自动去重(基于 ENTRY_ID) - ✅ 支持分页展示 ## 数据库设计 ### 1. 下载任务表 (DownloadTask) ```sql - id: 主键 - task_name: 任务名称 - company_name: 企业名称 - company_tax_no: 企业税号 - entry_id: 报关单号 - export_date_start: 出口日期起 - export_date_end: 出口日期止 - declare_date_start: 申报日期起 - declare_date_end: 申报日期止 - cron_expression: Cron表达式 - status: 状态 (0:禁用, 1:启用, 2:运行中) - last_execute_time: 最后执行时间 ``` ### 2. 下载日志表 (DownloadLog) ```sql - id: 主键 - task_id: 任务ID - task_name: 任务名称 - start_time: 开始时间 - end_time: 结束时间 - execute_status: 执行状态 (0:执行中, 1:成功, 2:失败) - total_count: 总数 - new_count: 新增数量 - duplicate_count: 重复数量 - error_msg: 错误信息 ``` ### 3. 关单数据表 (V_EntryData) 包含完整的关单信息字段(70+字段),ENTRY_ID 为主键。 ## 安装部署 ### 前置要求 - JDK 1.8+ - Maven 3.6+ - Node.js 14+ - SQL Server 2008+ ### 数据库配置 1. 创建数据库: ```bash # 连接到 SQL Server 服务器: 127.0.0.1 用户名: sa 密码: Admin@2026 ``` 2. 执行初始化脚本: ```bash # 运行 src/main/resources/db/init.sql ``` ### 后端部署 1. 修改配置文件 `src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:sqlserver://127.0.0.1:1433;databaseName=TaskFlowDB username: sa password: Admin@2026 ``` 2. 编译打包: ```bash mvn clean package ``` 3. 运行: ```bash java -jar target/taskflow-platform-1.0.0.jar ``` 后端服务将启动在 `http://localhost:8080/api` ### 前端部署 1. 进入前端目录: ```bash cd frontend ``` 2. 安装依赖: ```bash npm install ``` 3. 开发环境运行: ```bash npm run serve ``` 4. 生产环境打包: ```bash npm run build ``` 前端应用将启动在 `http://localhost:8081` ## 使用说明 ### 1. 添加下载任务 1. 访问系统首页,点击"添加任务"按钮 2. 填写任务信息: - **任务名称**: 任务的唯一标识 - **企业名称**: 要下载的企业名称(可选) - **企业税号**: 企业税号(可选) - **报关单号**: 指定报关单号(可选) - **出口日期**: 设置出口日期范围(可选) - **申报日期**: 设置申报日期范围(可选) - **Cron表达式**: 定时执行规则 - 每天凌晨2点: `0 0 2 * * ?` - 每小时执行: `0 0 * * * ?` - 每30分钟: `0 */30 * * * ?` - **状态**: 选择启用或禁用 3. 点击确定保存 ### 2. 管理任务 - **编辑**: 修改任务配置 - **启用/禁用**: 控制任务是否执行 - **立即执行**: 手动触发任务执行 - **删除**: 删除任务(会同时从调度器中移除) ### 3. 查看日志 进入"下载日志"页面,可以查看: - 任务执行历史 - 下载数据统计(总数、新增、重复) - 执行耗时 - 错误信息 ### 4. 查看关单数据 进入"关单数据"页面,可以: - 浏览所有已下载的关单 - 搜索和筛选关单 - 查看关单详细信息 ## Cron 表达式说明 格式:`秒 分 时 日 月 周` 常用示例: - `0 0 2 * * ?` - 每天凌晨2点执行 - `0 0 */2 * * ?` - 每2小时执行一次 - `0 */30 * * * ?` - 每30分钟执行一次 - `0 0 0 1 * ?` - 每月1号凌晨执行 - `0 0 9-18 * * ?` - 每天9点到18点每小时执行 ## 项目结构 ``` TaskFlowPlatform/ ├── src/ │ ├── main/ │ │ ├── java/com/taskflow/ │ │ │ ├── common/ # 公共类 │ │ │ ├── config/ # 配置类 │ │ │ ├── controller/ # 控制器 │ │ │ ├── dto/ # 数据传输对象 │ │ │ ├── entity/ # 实体类 │ │ │ ├── init/ # 初始化类 │ │ │ ├── mapper/ # MyBatis Mapper │ │ │ └── service/ # 服务层 │ │ └── resources/ │ │ ├── db/ # 数据库脚本 │ │ ├── mapper/ # MyBatis XML │ │ └── application.yml # 配置文件 │ └── test/ ├── frontend/ │ ├── public/ │ ├── src/ │ │ ├── api/ # API接口 │ │ ├── router/ # 路由配置 │ │ ├── store/ # Vuex状态管理 │ │ ├── utils/ # 工具类 │ │ └── views/ # 页面组件 │ └── package.json ├── pom.xml └── README.md ``` ## API 接口 ### 任务管理 - `GET /api/task/list` - 获取任务列表 - `POST /api/task` - 创建任务 - `PUT /api/task` - 更新任务 - `DELETE /api/task/{id}` - 删除任务 - `GET /api/task/{id}` - 获取任务详情 - `PUT /api/task/{id}/status/{status}` - 更新任务状态 - `POST /api/task/{id}/execute` - 手动执行任务 ### 日志管理 - `GET /api/log/list` - 获取日志列表 - `GET /api/log/{id}` - 获取日志详情 ### 关单数据 - `GET /api/entry/list` - 获取关单数据列表 - `GET /api/entry/{entryId}` - 获取关单数据详情 ## 注意事项 1. **数据库连接**:确保数据库服务器可访问,防火墙已开放1433端口 2. **重复数据**:系统会自动检测 ENTRY_ID 重复的数据并跳过 3. **定时任务**:Cron 表达式格式必须正确,否则任务无法执行 4. **日期格式**:日期格式统一为 yyyyMMdd(如:20231201) 5. **性能优化**:大量数据下载时建议在非工作时间执行 ## 常见问题 ### Q1: SQL Server 2008 连接失败(TLS协议问题)? A: 已修复!项目使用兼容的JDBC驱动版本(7.4.1),支持SQL Server 2008的TLS 1.0协议。 如果仍有问题,请查看详细的 **[故障排除指南](TROUBLESHOOTING.md)** ### Q2: 任务创建后不执行? A: 检查以下几点: - 任务状态是否为"启用" - Cron 表达式是否正确 - 查看后端日志是否有错误信息 ### Q3: 数据库连接失败? A: 检查: - 数据库服务器地址、端口是否正确 - 用户名密码是否正确 - 数据库是否已创建 - 网络是否通畅 - 防火墙是否开放1433端口 ### Q4: 前端无法访问后端? A: 检查: - 后端服务是否启动 - 端口是否被占用 - 跨域配置是否正确 **更多问题请查看:** [完整故障排除指南](TROUBLESHOOTING.md) ## 许可证 MIT License ## 联系方式 如有问题,请联系技术支持团队。