增加了查看入库秤上传图片的GUI界面。

This commit is contained in:
2025-11-27 10:46:53 +08:00
parent c74ac621a6
commit 1bedc16bd8
16 changed files with 2703 additions and 0 deletions
+212
View File
@@ -0,0 +1,212 @@
# 数字味道 - 物联网图片采集管理系统
## 项目简介
本系统用于管理物联网入库秤采集的图片数据,提供可视化查看、筛选和批量下载功能。
## 功能特性
### 1. 数据源管理
- **菜品**:档口秤采集的菜品图片
- **食材**:入库秤采集的食材图片
- **半加工**:净材秤采集的半加工食材图片
### 2. 多维度筛选
- 时间范围筛选(支持快捷选项:今日/最近3天/7天/30天)
- 物品名称搜索(模糊匹配)
- 设备编码筛选(精确匹配)
### 3. 图片预览
- 网格布局(5列)显示缩略图
- 显示物品名称、采集时间、设备编码
- 已下载图片显示✅标记
- 支持点击查看大图
### 4. 批量下载
- 多选图片批量下载
- 自动按分类创建子文件夹
- 文件命名规则:`{分类}_{时间戳}_{ID}.jpg`
- 多线程并发下载(5个线程)
- 实时进度显示
### 5. 统计分析
- 查询结果统计
- 时间分布统计(今日/本周/本月)
- TOP 10 物品排行榜
### 6. 下载历史
- 本地SQLite数据库记录下载历史
- 防止重复下载
- 支持清理无效记录
### 7. 数据导出
- 支持导出为JSON/CSV格式
- 可导出当前筛选结果
## 技术架构
### 数据库
- **MySQL**: 生产数据库(只读)
- 地址: 192.168.1.250:3308
- 数据库: yx_terminal
- 表:
- `dish_collection_vector_data_info` (菜品)
- `inbound_weighing_scale_vector_data_info` (食材)
- `dish_xxx` (半加工,待替换)
- **SQLite**: 本地下载历史数据库
- 路径: `data_management/download_history.db`
- 表: `download_history`
### 技术栈
- **UI框架**: CustomTkinter
- **ORM**: SQLAlchemy
- **MySQL驱动**: PyMySQL
- **网络请求**: Requests
- **图片处理**: Pillow
### 项目结构
```
data_management/
├── __init__.py
├── config.py # 配置文件
├── app.py # 主应用程序
├── database/ # 数据库模块
│ ├── __init__.py
│ ├── mysql_manager.py # MySQL管理器
│ └── sqlite_manager.py # SQLite管理器
├── ui/ # UI组件
│ ├── __init__.py
│ ├── filter_panel.py # 左侧筛选面板
│ ├── preview_panel.py # 中间预览面板
│ └── statistics_panel.py # 右侧统计面板
├── utils/ # 工具模块
│ ├── __init__.py
│ ├── image_downloader.py # 图片下载器
│ └── image_loader.py # 图片加载器
├── download_history.db # SQLite数据库(自动生成)
├── run.bat # Windows启动脚本
└── README.md # 本文件
```
## 安装依赖
确保已安装以下Python包:
```bash
pip install customtkinter
pip install sqlalchemy
pip install pymysql
pip install requests
pip install pillow
```
或者使用项目根目录的 `requirements.txt`(如果已包含相关依赖)。
## 运行方法
### Windows
双击运行 `run.bat` 脚本
### 命令行
```bash
cd data_management
python app.py
```
## 使用说明
### 1. 查询图片
1. 选择数据源(菜品/食材/半加工)
2. 设置筛选条件(时间、物品名称、设备编码)
3. 点击"查询"按钮
### 2. 下载图片
1. 在预览区勾选需要下载的图片
2. 点击"批量下载"按钮
3. 选择保存目录
4. 等待下载完成
### 3. 查看下载历史
1. 点击右侧"📜 下载历史"按钮
2. 查看历史记录
3. 可清理无效记录(本地文件已删除的记录)
### 4. 导出数据
1. 执行查询操作
2. 点击"📊 导出数据"按钮
3. 选择保存格式(JSON/CSV
4. 选择保存位置
## 配置说明
主要配置在 `config.py` 文件中:
### MySQL配置
```python
MYSQL_CONFIG = {
'host': '192.168.1.250',
'port': 3308,
'user': 'root',
'password': 'Aa135790123',
'database': 'yx_terminal',
}
```
### 下载配置
```python
DOWNLOAD_THREADS = 5 # 并发下载数
DOWNLOAD_TIMEOUT = 30 # 下载超时时间(秒)
CREATE_SUBFOLDERS = True # 是否按分类创建子文件夹
```
### UI配置
```python
WINDOW_WIDTH = 1600 # 窗口宽度
WINDOW_HEIGHT = 900 # 窗口高度
GRID_COLUMNS = 5 # 网格列数
THUMBNAIL_SIZE = 150 # 缩略图尺寸
ITEMS_PER_PAGE = 20 # 每页显示数量
```
## 注意事项
1. **网络连接**: 确保能连接到 192.168.1.250:3308 的MySQL服务器
2. **图片URL**: 图片URL前缀为 `http://dev.yixiong-tech.com:8081`
3. **只读访问**: 系统不会修改生产MySQL数据库
4. **下载状态**: 下载记录保存在本地SQLite数据库
5. **文件命名**: 下载的文件会自动重命名,避免冲突
6. **半加工表名**: 当前为 `dish_xxx`,待后续替换为实际表名
## 常见问题
### Q: 无法连接到MySQL数据库
A: 检查网络连接和防火墙设置,确保能访问 192.168.1.250:3308
### Q: 图片加载失败
A: 检查图片URL是否正确,确保能访问 `http://dev.yixiong-tech.com:8081`
### Q: 下载速度慢
A: 可在 `config.py` 中调整 `DOWNLOAD_THREADS` 参数增加并发数
### Q: 如何修改半加工表名
A: 修改 `config.py` 中的 `TABLE_MAPPING` 字典,将 `'半加工': 'dish_xxx'` 改为实际表名
## 更新日志
### v1.0.0 (2025-11-27)
- ✅ 初始版本发布
- ✅ 三栏式界面设计
- ✅ 多维度筛选功能
- ✅ 批量下载功能
- ✅ 下载历史记录
- ✅ 统计分析功能
- ✅ 数据导出功能
## 作者
数字味道团队
## 许可证
内部使用项目