Files
FoodClassifier/data_management

数字味道 - 物联网图片采集管理系统

项目简介

本系统用于管理物联网入库秤采集的图片数据,提供可视化查看、筛选和批量下载功能。

功能特性

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. 查询图片

  1. 选择数据源(菜品/食材/半加工)
  2. 设置筛选条件(时间、物品名称、设备编码)
  3. 点击"查询"按钮

2. 下载图片

  1. 在预览区勾选需要下载的图片
  2. 点击"批量下载"按钮
  3. 选择保存目录
  4. 等待下载完成

3. 查看下载历史

  1. 点击右侧"📜 下载历史"按钮
  2. 查看历史记录
  3. 可清理无效记录(本地文件已删除的记录)

4. 导出数据

  1. 执行查询操作
  2. 点击"📊 导出数据"按钮
  3. 选择保存格式(JSON/CSV
  4. 选择保存位置

配置说明

主要配置在 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         # 每页显示数量

注意事项

  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)

  • 初始版本发布
  • 三栏式界面设计
  • 多维度筛选功能
  • 批量下载功能
  • 下载历史记录
  • 统计分析功能
  • 数据导出功能

作者

数字味道团队

许可证

内部使用项目