5.5 KiB
5.5 KiB
数字味道 - 物联网图片采集管理系统
项目简介
本系统用于管理物联网入库秤采集的图片数据,提供可视化查看、筛选和批量下载功能。
功能特性
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包:
pip install customtkinter
pip install sqlalchemy
pip install pymysql
pip install requests
pip install pillow
或者使用项目根目录的 requirements.txt(如果已包含相关依赖)。
运行方法
Windows
双击运行 run.bat 脚本
命令行
cd data_management
python app.py
使用说明
1. 查询图片
- 选择数据源(菜品/食材/半加工)
- 设置筛选条件(时间、物品名称、设备编码)
- 点击"查询"按钮
2. 下载图片
- 在预览区勾选需要下载的图片
- 点击"批量下载"按钮
- 选择保存目录
- 等待下载完成
3. 查看下载历史
- 点击右侧"📜 下载历史"按钮
- 查看历史记录
- 可清理无效记录(本地文件已删除的记录)
4. 导出数据
- 执行查询操作
- 点击"📊 导出数据"按钮
- 选择保存格式(JSON/CSV)
- 选择保存位置
配置说明
主要配置在 config.py 文件中:
MySQL配置
MYSQL_CONFIG = {
'host': '192.168.1.250',
'port': 3308,
'user': 'root',
'password': 'Aa135790123',
'database': 'yx_terminal',
}
下载配置
DOWNLOAD_THREADS = 5 # 并发下载数
DOWNLOAD_TIMEOUT = 30 # 下载超时时间(秒)
CREATE_SUBFOLDERS = True # 是否按分类创建子文件夹
UI配置
WINDOW_WIDTH = 1600 # 窗口宽度
WINDOW_HEIGHT = 900 # 窗口高度
GRID_COLUMNS = 5 # 网格列数
THUMBNAIL_SIZE = 150 # 缩略图尺寸
ITEMS_PER_PAGE = 20 # 每页显示数量
注意事项
- 网络连接: 确保能连接到 192.168.1.250:3308 的MySQL服务器
- 图片URL: 图片URL前缀为
http://dev.yixiong-tech.com:8081 - 只读访问: 系统不会修改生产MySQL数据库
- 下载状态: 下载记录保存在本地SQLite数据库
- 文件命名: 下载的文件会自动重命名,避免冲突
- 半加工表名: 当前为
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)
- ✅ 初始版本发布
- ✅ 三栏式界面设计
- ✅ 多维度筛选功能
- ✅ 批量下载功能
- ✅ 下载历史记录
- ✅ 统计分析功能
- ✅ 数据导出功能
作者
数字味道团队
许可证
内部使用项目