# 数字味道 - 物联网图片采集管理系统 ## 项目简介 本系统用于管理物联网入库秤采集的图片数据,提供可视化查看、筛选和批量下载功能。 ## 功能特性 ### 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) - ✅ 初始版本发布 - ✅ 三栏式界面设计 - ✅ 多维度筛选功能 - ✅ 批量下载功能 - ✅ 下载历史记录 - ✅ 统计分析功能 - ✅ 数据导出功能 ## 作者 数字味道团队 ## 许可证 内部使用项目