ManageDishTeminal 智能排菜系统
ManageDishTeminal 是面向食堂排菜终端的 Android Pad 应用。应用以横屏全屏方式运行,提供本地登录、终端配对、档口菜谱维护、称重台当前排菜、主题字号设置、行为日志和崩溃捕获等能力。
功能路径
- 启动进入
LoginActivity,使用本地账号登录。 - 登录成功进入
HomeActivity,展示排菜和设置菜谱两个业务入口。 - 首次进入业务页前需要在系统设置中补齐配置链接、配对码和设备编号。
- 进入
ArrangeActivity后选择档口,加载称重台设备列表,对左称、右称进行当前排菜。 - 进入
RecipeActivity后按日期、餐次、档口维护菜谱,支持新增、移除和复制菜谱。
核心功能
登录与首页
- 默认账号为
admin,默认密码为123456。 - 本地密码可在系统设置中修改,修改后只影响当前设备。
- 登录页支持记住密码和密码可见性切换。
- 首页展示当前日期、功能入口和健康提示轮播。
- 标题栏用户名可打开退出登录菜单。
系统设置
系统设置入口需要管理员密码验证,默认管理员密码为 cpt123。设置项包括:
- 配置链接:默认
https://zhctdev.yyangpt.cn,保存后会重建 Retrofit 客户端。 - 配对码:通过
/p/api/matecode校验后保存配对码、设备编号、餐厅 ID、餐厅名称。 - 设备编号:由配对接口返回,不支持手动直接编辑。
- 主题颜色:橙色、蓝色、绿色。
- 字号大小:小、中、大。
- 本地登录密码:输入旧密码和新密码后确认修改。
当配置链接、配对码或设备编号缺失时,首页进入业务页会强制弹出设置框,避免业务接口缺少终端定位信息。
排菜
ArrangeActivity 负责称重台当前排菜:
- 根据设备编码请求区域、餐厅、档口三级树。
- 选择档口后请求该档口下的称重台设备列表。
- 设备列表支持下拉刷新。
- 支持按全部、在线、离线、未排菜筛选设备。
- 每台设备展示左称、右称当前菜品、在线状态和图片。
- 右侧抽屉可在菜谱库和菜品库之间切换,支持关键字搜索、分类筛选、分页加载。
- 点击称位可替换当前菜品;已排菜称位支持清空。
- 离线设备允许保存排菜,页面提示设备在线后可下发。
设置菜谱
RecipeActivity 负责维护档口菜谱:
- 顶部按 7 天日期条切换日期。
- 支持选择早餐、午餐、晚餐、夜宵。
- 支持选择档口并加载对应菜谱。
- 菜谱以 5 列网格展示,今天以前的菜谱只读。
- 新增菜品通过右侧抽屉选择,支持搜索、分类、多选和批量加入。
- 已有菜品支持移除。
- 复制菜谱支持按天复制和按自然周复制,可选择全部餐次或指定餐次。
网络与本地能力
- 网络层使用 Retrofit、OkHttp、RxJava2。
ApiRequest统一处理线程切换、全局 loading 和接口失败日志。ApiClient支持设置页动态切换服务地址。BaseActivity统一横屏、全屏、常亮、Toast、字体缩放和 loading 生命周期。CrashHandler负责崩溃捕获。BehaviorLogUtils和LocalFileRecorder用于记录关键行为日志。
主要接口
| 功能 | 接口 |
|---|---|
| 配对码校验 | POST /p/api/matecode |
| 设备开机初始化 | POST /p/api/equipmentStart |
| 档口树 | POST /api/device/restaurant/tree |
| 档口设备列表 | POST /api/device/restaurant/equipmentList |
| 餐厅餐次信息 | POST /p/api/getRestaurantsInfo |
| 菜品列表 | POST /p/api/CaterList |
| 已配置菜谱 | POST /p/api/getMeal |
| 添加菜谱菜品 | POST /api/device/recipe/addDishes |
| 删除菜谱菜品 | POST /api/device/recipe/deleteDishes |
| 下发称重台当前排菜 | POST /api/device/equipment/pushDishes |
| 复制菜谱 | POST /api/device/recipe/copy |
代码中仍保留 /todo/getScaleList、/todo/saveScaleDish、/todo/saveRecipeDishes 等占位接口,当前主流程未作为完成接口依赖。
技术栈
- Android Gradle Plugin 7.3.0
- Java 8 语法目标
minSdk 29,compileSdk 32,targetSdk 32- AppCompat、Material、ConstraintLayout、SwipeRefreshLayout
- Retrofit 2.1.0、OkHttp 3.9.0、RxJava2、Gson
- Glide 4.14.2
目录结构
app/src/main/java/com/cpt/managedishteminal/
├── activity/ 页面入口:登录、首页、排菜、设置菜谱、崩溃页
├── application/ Application 初始化
├── network/ Retrofit 接口、客户端、请求封装、响应模型
├── utils/ 配置、日志、主题、日期、Toast、崩溃处理等工具
└── view/ 设置弹窗、输入弹窗、标题栏、loading、管理员密码弹窗
app/src/main/res/
├── layout/ 页面和弹窗布局
├── drawable/ 背景、按钮、图标资源
└── values/ 字符串、颜色、尺寸、主题、数组
构建与验证
项目可使用 Android Studio 打开,也可在命令行执行:
./gradlew :app:assembleDebug
./gradlew :app:lintDebug
本机验证建议使用 Android Studio 自带 JDK 11。历史验证中,强制 Java 8 会与当前 AGP 7.3 构建链不匹配。
运行配置
安装后首次进入业务功能时完成以下配置:
- 输入服务地址。
- 输入配对码并等待接口校验成功。
- 确认设备编号已由接口返回并展示。
- 按需选择主题颜色和字号。
配置保存后,排菜页和设置菜谱页会使用已保存的设备编号、餐厅 ID、档口、餐次和日期参数请求接口。
提示词工程资料
本项目的提示词工程目录为:
/Users/liang/AndroidStudioProjects/zhct/zhctprompt/work_android/ManageDishTeminal/
该目录用于保存项目规则、接口参考、变更记录、聊天记录和 README 副本。新增 Markdown 文档时,需要在同目录同步生成 HTML 版本。