目标:在设置页增加“放盘稳定判断”开关,用于控制识别到有效餐盘后是否等待秤体稳定。开关默认开启,升级后的设备保持当前行为;关闭后跳过稳定判断,直接进入取餐页面。
实施范围:仅调整本地设置和放盘后的页面切换逻辑,不变更餐盘识别规则、取餐重量算法、人员查询接口、移盘判定及取餐记录上传规则。
放盘稳定判断MmkvUtils 本地持久化。mCurrentWeight 作为起始重量。关闭稳定判断可能让尚未稳定的重量成为起始值,造成取餐重量偏差。这属于关闭保护后的预期风险,后续重量算法保持不变。
文件:Constants.java、strings.xml
SETTING_TRAY_STABILITY_CHECK_ENABLED = "setting_tray_stability_check_enabled"。true 为默认值,无需迁移旧数据。验收:未保存过该设置的新旧设备均默认开启,业务代码不散落设置键字符串。
文件:activity_set.xml、SetActivity.java
SwitchButton。验收:首次打开显示开启;关闭或再次开启后,退出设置页和重启应用均能保持状态;样式与现有开关一致。
文件:HomeActivity.java
enterPickingIfTrayStillPresent(String trayCode)。trayCode.equals(mCurrentCode)。识别有效餐盘
|
+-- 开关关闭 --> 校验餐盘仍存在 --> 记录当前重量 --> 进入取餐页
|
+-- 开关开启 --> 等待重量稳定 --> 校验餐盘仍存在 --> 记录当前重量 --> 进入取餐页
验收:开启时保持现状;关闭时无稳定等待提示并直接进入;等待期间移盘或换盘后,旧任务不能延迟切页;每次只查询一次人员。
JAVA_HOME=$(/usr/libexec/java_home -v 1.8) ./gradlew --no-daemon :app:assembleDebug
预期结果:BUILD SUCCESSFUL。
| 场景 | 操作 | 预期结果 |
|---|---|---|
| 默认值 | 清除新增设置键后进入设置页 | 开关默认开启 |
| 开启且稳定 | 放置有效餐盘 | 稳定后进入取餐页 |
| 开启且波动 | 放盘并持续扰动秤体 | 保持等待,不提前进入 |
| 开启时快速移盘 | 稳定前移走餐盘 | 之后不发生延迟跳转 |
| 关闭且波动 | 关闭开关后放置餐盘 | 跳过稳定判断,直接进入 |
| 状态持久化 | 关闭开关并重启应用 | 开关仍为关闭 |
| 取餐闭环 | 两种模式分别完成取餐并移盘 | 重量、查人、入队和上传规则不变 |
| 餐盘更换 | 等待期间将餐盘 A 换为 B | A 的任务退出,只处理 B |
git diff --check git diff -- app/src/main/java/com/cpt/zhct/weighting/activity/HomeActivity.java \ app/src/main/java/com/cpt/zhct/weighting/activity/SetActivity.java \ app/src/main/java/com/cpt/zhct/weighting/utils/Constants.java \ app/src/main/res/layout/activity_set.xml \ app/src/main/res/values/strings.xml
| 风险 | 影响 | 控制措施 |
|---|---|---|
| 关闭后以未稳定重量作为起始值 | 取餐重量可能偏差 | 默认开启,设置名称明确表达保护作用 |
| 移盘后等待线程继续执行 | 页面延迟误跳转 | 循环和统一入口均校验当前餐盘码 |
| 多处实现进入取餐逻辑 | 重复切页或重复查人 | 收口为一个统一入口 |
| 旧设备升级后行为变化 | 现场使用受影响 | 缺省读取 true,保持现有行为 |
预计修改 5 个项目文件:Constants.java、strings.xml、activity_set.xml、SetActivity.java、HomeActivity.java。
实际实施完成后,在项目提示词镜像的 change_records 目录建立同名 Markdown/HTML 变更记录。
本方案不包含:调整稳定判断帧数或阈值、增加等待超时、修改餐盘绑定人员状态清理、修改移盘判定、修改上传或补传机制。