Przeglądaj źródła

梳理仓库结构,保留原始仓库内容

angelcstt 1 tydzień temu
rodzic
commit
99c244bd1f
6 zmienionych plików z 3093 dodań i 3 usunięć
  1. 1 1
      app/src/main/res/layout/activity_chemical_labeling.xml
  2. 2242 0
      chem.md
  3. 837 0
      chemFeatures.md
  4. 12 1
      gradle.properties
  5. 0 0
      gradlew
  6. 1 1
      settings.gradle

+ 1 - 1
app/src/main/res/layout/activity_chemical_labeling.xml

@@ -411,7 +411,7 @@
                         android:text="RFID编号"
                         android:textColor="@color/black"
                         android:textSize="12sp"
-                        android:visibility="gone" />
+                        android:visibility="visible" />
 
                     <TextView
                         android:layout_width="match_parent"

Plik diff jest za duży
+ 2242 - 0
chem.md


+ 837 - 0
chemFeatures.md

@@ -0,0 +1,837 @@
+# 化学品智能管理终端 App 功能表格导航
+
+## 1. 文档说明
+
+本文将当前仓库按 **功能 -> 页面 -> 接口 -> 模型** 的方式整理为表格,适合:
+
+- 新开发接手时快速定位代码
+- 功能评审时快速查看页面与接口对应关系
+- 排查问题时按业务链路反查源码
+
+项目根定位:**实验室化学品智能管理终端(壁挂 Android 一体机)**。
+
+---
+
+## 2. 项目主入口总表
+
+| 功能域 | 入口页面/类 | 作用说明 | 关键文件 |
+|---|---|---|---|
+| 应用初始化 | `ChemicalApp` | 初始化全局状态、蓝牙、X5、日志、ANR 恢复 | `app/src/main/java/xn/hxp/app/ChemicalApp.kt:32` |
+| 启动与设备绑定 | `StartActivity` | 自动授权、读取本地配置、校验设备绑定实验室、跳主页 | `app/src/main/java/xn/hxp/ui/StartActivity.java:34` |
+| 主工作台 | `MainActivity` | 主菜单入口、柜体轮播、登录分流、心跳、自动登出 | `app/src/main/java/xn/hxp/ui/MainActivity.java:87` |
+| 设置 | `SettingActivity` | 服务地址、管理员密码、蓝牙秤、相机、系统控制 | `app/src/main/java/xn/hxp/ui/SettingActivity.java:24` |
+
+---
+
+## 3. 功能总览表
+
+| 功能模块 | 主页面 | 子页面/辅助类 | 主要接口 | 关键模型 |
+|---|---|---|---|---|
+| 登录认证 | `SwipeActivity` / `ScanLoginActivity` / `FaceLoginActivity` / `FacialCardActivity` | `AuthenticationDialog` | `cardNum` `userCardValidation` `getScanCode` `faceNewCompare` | `UserData` `UserValidationBean` `ConfigBean` |
+| 双人认证 | `TwoVerificationActivity` | `TwoPersonActivity` `SwipeCodeTwoActivity` `ScanCodeTwoActivity` `DoublePeopleDialog` | `useCardVerify` `aioScanLogin` `checkUserFaceByPic` | `UserValidationBean` `DoubleDialogBean` |
+| 新增入库 | `PlanAddActivity` | `PlanAddActivityHelp` `AddActivity` `AddActivityHelp` `UnlockActivity` `SaveListActivity` | `getRelList` `getCabinetListBySub` `scanCodeChemical` `certitude` `getControlConfigs` `addStockCheck` `addStock` | `HxpChemicalVo` `InventoryItemBean` `StockModeBean` `StockModel` `ChemicalInfoBean` |
+| 已申领未入库 | `AlreadyActivity` | `AlreadyAdapter` | `getHxpStockWait` | `AlreadyBean` `PageHxpStockBean` |
+| 领用 | `UseActivity` | `UsageLabelDialog` `WeighDialog` | `getStockList` `getByRfid` `addUseRecord` `lockOperate` `getLocks` `outTimeWarn` | `UseBean` `UsePostDataBean` `ChemistryBean` `LockVoListBean` |
+| 归还/空瓶/废弃回流 | `ChemicalsAlsoActivity` | `DiscardDialog` `EmptiesDialog` `CabinetOpenDialog` `AirBottleDialog` `AirBottleNewDialog` | `useList` `backDetail` `giveBack` `returnGiveBack` `updateRfid` `lockOperate` `getLocks` | `ReturningChemicalsBean` `ReturnDetailsBean` `ReturnGiveBackBean` `GiveBackBean` |
+| 废弃出库 | `WasteChemicalsActivity` | `DiscardDialog` `StorageDialog` | `stockDetailsList` `discardDetail` `giveBack` `outTimeWarn` `lockOperate` | `WasteChemicalsBean` `ReturnDetailsBean` `GiveBackBean` `TimeWarBean` |
+| 查询 | `InquiryActivity` | `QueryOneFragment` `QueryTwoFragment` `PromptDialog` `ScanCodeDialog` | `getCabinetList` `indexDetailbyRfid` `getStockDetailsByCode` `lockOperate` `getLocks` | `RuleBean` `UseNoBean` `UseNoTwoBean` `LockVoListBean` |
+| 标签/RFID 管理 | `ChemicalLabelingActivity` | `AirBottleDialog` `AirBottleNewDialog` | `tagDetailsList` `getDetailsById` `updateRfid` `lockOperate` | `QueryTwoBean` `ReturnDetailsBean` |
+| 电子台账 | `LedgerActivity` | `UseLedgerFragment` `InventoryIedgerFragment` | `useRecords` `stockLedger` `useReturnList` | `UseLedBean` `InventoryListBean` |
+| 预警事件 | `WarningEventsActivity` | `ProcessedActivity` | `warningNoticeList` `warningNoticeDetail` `handleMessage` `warningNoticeCount` | `EarlyWarningBean` `ProcessedBean` |
+| MSDS | `MsdsActivity` | `MsdsScreenActivity` | `getMsdsDetails` `msdsDetails` | `MsdsBean` `MsdsListBean` |
+| 设备运维 | `SettingActivity` / `MainActivity` / `StartActivity` | `Tool` `HttpTool` | `iot/aio/report` `terminal/machine/heartbeat` `onepcApkUpdate` | `AppInfo` `LabInfo` |
+
+---
+
+## 4. 入口与全局初始化表
+
+### 4.1 应用启动链路
+
+| 环节 | 页面/类 | 主要动作 | 关键接口/工具 | 关键数据 |
+|---|---|---|---|---|
+| Application 初始化 | `ChemicalApp` | 初始化全局状态、蓝牙、X5、日志、ANR 恢复 | `SppTool.init()` `BleManager` `QbSdk` | `userData` `subjectId` `confs` `labInfo` |
+| 启动页 | `StartActivity` | 长按进设置、授权、恢复本地配置 | `Tool.cmd()` `SharedPreferencesHelper.getUrlBase()` | `SettingsBean` |
+| 设备绑定实验室 | `StartActivity.initView()` | 调设备上报接口,获取实验室信息 | `HttpTool.getCheck()` | `LabInfo` |
+| 主菜单加载 | `MainActivity` | 拉基础配置、柜体轮播、登录态展示 | `ApiRepository.basicConfig()` `ApiRepository.getCabinetBySubId()` | `ConfigBean` `RuleBean` |
+| 心跳与在线 | `MainActivity` | 每 20 秒上报设备心跳 | `HttpTool.heartbeat()` | 设备号/IP/前台状态 |
+
+### 4.2 主菜单功能映射
+
+| 主页入口控件 | 跳转页面 | 功能含义 | 关键代码 |
+|---|---|---|---|
+| `addChemicals` | `PlanAddActivity` / `AlreadyActivity` | 入库/待入库管理 | `MainActivity.java:465-480` `MainActivity.java:645-684` |
+| `reDis` | `WasteChemicalsActivity` | 废弃出库 | `MainActivity.java:482-491` |
+| `reInq` | `InquiryActivity` | 查询 | `MainActivity.java:493-501` |
+| `reCla` | `UseActivity` | 领用 | `MainActivity.java:504-513` |
+| `reRet` | `ChemicalsAlsoActivity` | 归还/空瓶/废弃回流 | `MainActivity.java:515-524` |
+| `rlLedger` | `LedgerActivity` | 电子台账 | `MainActivity.java:526-535` |
+| `reLedger` | `ChemicalLabelingActivity` | 标签/RFID 管理 | `MainActivity.java:537-546` |
+| `rlWarning` | `WarningEventsActivity` | 预警事件 | `MainActivity.java:548-557` |
+| `rlDem` | `MsdsActivity` | MSDS | `MainActivity.java:559-564` |
+
+---
+
+## 5. 登录认证功能表
+
+### 5.1 登录方式表
+
+| 功能 | 页面 | 触发来源 | 主要接口 | 关键模型 | 备注 |
+|---|---|---|---|---|---|
+| 刷卡登录 | `SwipeActivity` | 主页登录分流 | `cardNum` `userCardValidation` | `UserData` `UserValidationBean` | 通过卡号获取 token,再校验实验室权限 |
+| 扫码登录 | `ScanLoginActivity` | 主页登录分流 | `getScanCode` / 扫码认证相关 | `UserData` | 与二维码/微信码联动 |
+| 人脸登录 | `FaceLoginActivity` | 主页登录分流 | `faceNewCompare` | `UserData` | 摄像头拍照比对 |
+| 人脸+刷卡 | `FacialCardActivity` | 配置 `loginType` 包含 4 | 组合认证 | `UserData` | 硬件一体机组合登录 |
+
+### 5.2 登录方式配置表
+
+| 配置字段 | 含义 | 使用位置 |
+|---|---|---|
+| `ConfigBean.loginType` | 登录方式配置 | `MainActivity.java:325-384` `InquiryActivity.java:623-678` |
+| `1` | 人脸 | `basicConfLog()` 分流 |
+| `2` | 刷卡 | `basicConfLog()` 分流 |
+| `3` | 扫码 | `basicConfLog()` 分流 |
+| `4` | 人脸+刷卡组合 | `FacialCardActivity` |
+
+### 5.3 登录后角色判定表
+
+| 角色字段 | 说明 | 主要用途 |
+|---|---|---|
+| `schoolLevelAdmin` | 校级管理员 | 高权限管理/管控类操作 |
+| `collegeAdmin` | 院级管理员 | 高权限管理/管控类操作 |
+| `adminUser` | 实验室负责人 | 登录、双人认证、柜门操作 |
+| `safeUser` | 安全负责人 | 登录、双人认证、柜门操作 |
+| `cabinetAdmin` | 柜锁管理员 | 柜门开锁、认证 |
+| `belongUser` | 化学品归属人 | 领用/归还相关合法身份 |
+| `toipcUser` | 课题组成员 | 领用/归还相关合法身份 |
+| `apply` | 实验室准入 | 登录放行 |
+| `white` | 白名单 | 登录放行 |
+
+来源:`app/src/main/java/com/rc/httpcore/bean/UserValidationBean.kt:4`
+
+---
+
+## 6. 双人认证功能表
+
+### 6.1 双人认证场景表
+
+| `mTag` | 业务场景 | 调用方页面 | 备注 |
+|---|---|---|---|
+| `0` | 新增入库 | `PlanAddActivity` / `UnlockActivity` 一线流程 | 对入库相关高风险操作做二次授权 |
+| `1` | 归还/废弃/空瓶/标签管理 | `ChemicalsAlsoActivity` `WasteChemicalsActivity` `ChemicalLabelingActivity` | 与开门、回流处理相关 |
+| `2` | 待入库 | 待入库相关 | 用于待入库确认场景 |
+| `3` | 领用 | `UseActivity` | 领用前双人授权 |
+
+来源:`TwoVerificationActivity.kt:83`
+
+### 6.2 认证方式表
+
+| 配置字段 | 说明 | 页面使用点 |
+|---|---|---|
+| `ConfigBean.verifyType` | 双人认证方式配置 | `UseActivity` `ChemicalsAlsoActivity` `WasteChemicalsActivity` `ChemicalLabelingActivity` |
+| `1` | 人脸 | 调 `checkUserFaceByPic` |
+| `2` | 刷卡 | 调 `useCardVerify` |
+| `3` | 扫码 | 调 `aioScanLogin` |
+| `1,2` / `1,3` / `2,3` / 多组合 | 组合认证 | 统一落到 `TwoVerificationActivity` |
+
+### 6.3 双人认证接口表
+
+| 接口 | 方法 | 用途 | 关键参数 |
+|---|---|---|---|
+| `chemical/aio/verify/useCardVerify` | `useCardVerify` | 双人刷卡认证 | `cardNum` `subId` `doorId` |
+| `chemical/aio/verify/aioScanLogin` | `aioScanLogin` | 双人扫码认证 | `subId` `doorId` `code` |
+| `chemical/aio/verify/checkUserFaceByPic` | `checkUserFaceByPic` | 双人人脸认证 | `subId` `doorId` `stockId` `waitId` |
+
+### 6.4 双人认证结果承接表
+
+| 动作 | 存储位置 | 后续消费页面 |
+|---|---|---|
+| 缓存两位认证人 | `SharedPreferencesHelper.saveList()` | `UseActivity` `ChemicalsAlsoActivity` `WasteChemicalsActivity` `InquiryActivity` 等 |
+| 打开认证结果对话框 | `DoublePeopleDialog` | 认证成功后的过渡页 |
+| 将双人信息写入业务请求 | `oneUserId/twoUserId` 或 `backOneUser/backTwoUser` | 开锁、归还、废弃、入库提交 |
+
+---
+
+## 7. 入库功能表
+
+### 7.1 入库页面表
+
+| 功能子项 | 页面/类 | 作用 | 关键依赖 |
+|---|---|---|---|
+| 计划入库工作台 | `PlanAddActivity` | 展示当前柜层待入库清单,发起最终提交 | `PlanAddActivityHelp` `LockerAdapter` `Room DAO` |
+| 计划入库辅助 | `PlanAddActivityHelp` | 拉实验室/柜体信息、扫码录入、保存入库 | `HttpTool` `ApiRepository` `PortScanHelper` |
+| 手动录入 | `AddActivity` | 录入化学品基础信息与归属信息 | `AddActivityHelp` |
+| 手动录入辅助 | `AddActivityHelp` | 化学品搜索、类别/归属人/课题组选择、称重与保存 | `ApiRepository` `BluetoothWeighDialog` `PrintLabelDialog` |
+| 入库开锁 | `UnlockActivity` | 按待入库清单逐个柜门开锁 | `UnlockActivityHelp` `UnlockAdapter` |
+| 入库结果页 | `SaveListActivity` | 显示已保存完成结果 | 结果展示 |
+| 已申领未入库 | `AlreadyActivity` | 处理已申领未入库单据 | `AlreadyAdapter` |
+
+### 7.2 入库接口表
+
+| 接口 | 方法 | 用途 | 调用位置 |
+|---|---|---|---|
+| `laboratory/subRelInfo/getRelList` | `getRelList` | 获取实验室基础信息 | `PlanAddActivityHelp.getLabInfo()` |
+| `chemical/aio/getCabinetListBySub` | `HttpTool.getCabinetList()` | 获取柜体/柜门详情 | `PlanAddActivityHelp.getCabinetList()` |
+| `chemical/stockWait/scanCodeChemical` | `scanCodeChemical` | 扫码获取化学品信息 | `PlanAddActivityHelp.chemicalSearchByCode()` |
+| `chemical/aio/controlConfig` | `getControlConfigs` | 获取化学品控制配置 | `AddActivityHelp.save()` |
+| `chemical/aio/certitude` | `certitude` | 化学品确认/补全 | `AddActivityHelp.save()` |
+| `chemical/aio/addStockCheck` | `addStockCheck` | 称重/入库合法性校验 | `BluetoothWeighDialog` |
+| `chemical/aio/addStock` | `addChemical` / `stockWaitAdd` | 最终提交入库 | `PlanAddActivityHelp.save()` |
+| `chemical/aio/getHxpStockWait` | `HttpTool.getHxpStockWait()` | 获取已申领未入库列表 | `MainActivity.getHxpStockWait()` |
+
+### 7.3 入库核心模型表
+
+| 模型 | 作用 | 关键字段 |
+|---|---|---|
+| `HxpChemicalVo` | 入库主数据模型 | `chemicalId` `chemicalLevel` `belongId` `cabinetId` `doorId` `joinType` `stockType` |
+| `InventoryItemBean` | 本地待入库 item | 柜体/柜门/层/数量/绑定的化学品 |
+| `StockModel` | 校验用入参 | 称重校验相关 |
+| `StockModeBean` | 提交入库入参 | 待入库整体提交 |
+| `ChemicalInfoBean` | 实验室基础信息 | 实验室维度数据 |
+| `ChemicalTypeBean` | 化学品类别字典 | `label` `value` |
+| `BelongingPersonBean` | 归属人 | `userId` `userName` `account` |
+| `TopicDataBean` | 课题组 | `topicId` `topicName` |
+
+### 7.4 入库现场动作表
+
+| 动作 | 页面/类 | 说明 |
+|---|---|---|
+| 柜层选择 | `LockerFragment` + Room DAO | 选择最终存储柜层 |
+| 手动录入 | `AddActivity` | 普通人工录入 |
+| 扫码录入 | `PlanAddActivityHelp.startScanEventListener()` | 兼容多种二维码/条码 |
+| 标签打印确认 | `PrintLabelDialog` | 录入后是否打印标签 |
+| 蓝牙称重 | `BluetoothWeighDialog` | 入库前称重校验 |
+| 智能柜开门 | `UnlockActivity` | 提交前先开门 |
+
+---
+
+## 8. 领用功能表
+
+### 8.1 领用页面表
+
+| 功能子项 | 页面/类 | 说明 |
+|---|---|---|
+| 领用工作台 | `UseActivity` | 柜门选择、库存查询、开门、扫描、称重、提交 |
+| 领用弹窗 | `UsageLabelDialog` | 开门后在弹窗中刷标签/RFID、移除条目、再次开门 |
+| 称重弹窗 | `WeighDialog` / 页面内蓝牙逻辑 | 领用称重或手动录入 |
+
+### 8.2 领用接口表
+
+| 接口 | 方法 | 用途 | 调用位置 |
+|---|---|---|---|
+| `chemical/aio/stockList` | `getStockList` | 查询可领用库存列表 | `UseActivity.getStockList()` |
+| `chemical/aio/byRfid` | `getByRfid` | 根据 RFID 查询领用对象 | `UseActivity.getByRfid()` |
+| `chemical/aio/addUserecord` | `addUseRecord` | 提交领用记录 | `UseActivity.putDataUse()` |
+| `chemical/aio/getCabinetList` | `getCabinetList` | 获取柜门列表 | `UseActivity.getCabinet()` |
+| `chemical/aio/lockOperate` | `lockOperate` | 开锁 | `UseActivity.openLock()` |
+| `chemical/aio/getLockStatus` | `getLocks` | 轮询锁状态 | `UseActivity.getLocks()` |
+| `chemical/aio/outTimeWarn` | `outTimeWarn` | 异常退出上报 | `UseActivity.outTimeWarnData()` |
+
+### 8.3 领用模型表
+
+| 模型 | 用途 | 关键字段 |
+|---|---|---|
+| `UseBean` | RFID 领用详情 | 领用前化学品信息 |
+| `ChemistryBean` | 单条领用记录 | 数量、出库方式、标签等 |
+| `UsePostDataBean` | 领用提交体 | `userecordModelList` |
+| `LockVoListBean` | 柜锁信息 | `lockNum` `unlockingMethod` `isOk` |
+| `RuleBean` | 柜体/柜门容器 | `cabinetDoorVoList` |
+| `TimeWarBean` | 异常上报 | 超时/异常柜门记录 |
+
+### 8.4 领用现场流程表
+
+| 步骤 | 页面动作 | 关键点 |
+|---|---|---|
+| 选择柜体 | 左侧柜体列表 | `CabinetDoorAdapter` |
+| 选择柜门 | 右侧柜门列表 | `CabinetDoorRighAdapter` |
+| 判断双人认证 | `verify == true` | 走 `TwoVerificationActivity` |
+| 判断智能锁 | `unlockingMethod == 2` | 先 `openLock()` |
+| 扫描化学品 | `onCardInContent()` | 查 `getByRfid` |
+| 称重/录入 | `weighData()` | 蓝牙秤或手动 |
+| 提交 | `putDataUse()` | 调 `addUseRecord` |
+| 异常离开 | `outTimeWarnData()` | 上报开门未完成场景 |
+
+---
+
+## 9. 归还/空瓶/废弃回流功能表
+
+### 9.1 页面表
+
+| 功能子项 | 页面/类 | 说明 |
+|---|---|---|
+| 归还总工作台 | `ChemicalsAlsoActivity` | 待归还查询、详情展示、归还、空瓶、废弃、换标、补打 |
+| 废弃原因录入 | `DiscardDialog` | 录入废弃原因 |
+| 空瓶确认 | `EmptiesDialog` | 空瓶处理 |
+| RFID 更换/打印 | `AirBottleDialog` `AirBottleNewDialog` | 换标和补打 |
+| 柜门已开提示 | `CabinetOpenDialog` | 开门后的引导交互 |
+
+### 9.2 接口表
+
+| 接口 | 方法 | 用途 | 调用位置 |
+|---|---|---|---|
+| `chemical/aio/useList` | `useList` | 查询待归还列表 | `ChemicalsAlsoActivity.useList()` |
+| `chemical/aio/backDetail` | `backDetail` | 获取归还详情 | 扫描/点击进入详情 |
+| `chemical/aio/giveBack` | `giveBack` | 归还/空瓶/废弃提交 | `ChemicalsAlsoActivity` |
+| `chemical/aio/giveBack` | `returnGiveBack` | 返回更丰富归还结果 | `ChemicalsAlsoActivity` |
+| `chemical/aio/updateRfid` | `updateRfid` | 更换 RFID | `ChemicalsAlsoActivity.updateRfid()` |
+| `chemical/aio/lockOperate` | `lockOperate` | 柜门开锁 | `ChemicalsAlsoActivity.openLock()` |
+| `chemical/aio/getLockStatus` | `getLocks` | 轮询锁状态 | `ChemicalsAlsoActivity.getLocks()` |
+
+### 9.3 模型表
+
+| 模型 | 用途 | 关键字段 |
+|---|---|---|
+| `ReturningChemicalsBean` | 待归还列表 | 分页记录 |
+| `ReturnDetailsBean` | 归还详情 | `chemicalLevel` `verify` `cabinetLockVoList` `rfidCode` |
+| `GiveBackBean` | 归还/废弃提交体 | `returnType` `useStatus` `weigh` `disuseReason` `backOneUser/backTwoUser` |
+| `ReturnGiveBackBean` | 归还结果 | 结果回显 |
+
+### 9.4 状态字段表
+
+| 字段 | 取值 | 含义 | 来源 |
+|---|---|---|---|
+| `returnType` | `1` / `2` | 归还方式:称重 / 录入 | `GiveBackBean.kt:20` |
+| `outType` | `1` / `2` | 领用方式:称重 / 录入 | `GiveBackBean.kt:13` |
+| `useStatus` | `0` | 归还 | 代码使用线索 |
+| `useStatus` | `3` | 空瓶/废弃出库 | `GiveBackBean.kt:23` |
+| `useStatus` | `4` | 作废/归还相关状态流转 | 页面使用线索 |
+
+---
+
+## 10. 废弃功能表
+
+### 10.1 页面表
+
+| 功能 | 页面/类 | 说明 |
+|---|---|---|
+| 废弃列表与处理 | `WasteChemicalsActivity` | 查询可废弃对象、扫描进入详情、录入原因、提交废弃 |
+| 废弃原因弹窗 | `DiscardDialog` | 录入废弃原因 |
+| 柜位选择弹窗 | `StorageDialog` | 柜体/柜门过滤 |
+
+### 10.2 接口表
+
+| 接口 | 方法 | 用途 |
+|---|---|---|
+| `chemical/aio/stockDetailsList` | `stockDetailsList` | 查询可废弃化学品列表 |
+| `chemical/aio/discardDetail` | `discardDetail` | 获取废弃详情 |
+| `chemical/aio/giveBack` | `giveBack` | 提交废弃出库 |
+| `chemical/aio/lockOperate` | `lockOperate` | 柜门开锁 |
+| `chemical/aio/outTimeWarn` | `outTimeWarn` | 开门后异常退出上报 |
+
+### 10.3 模型表
+
+| 模型 | 用途 |
+|---|---|
+| `WasteChemicalsBean` | 废弃列表分页容器 |
+| `ReturnDetailsBean` | 废弃详情承接 |
+| `GiveBackBean` | 废弃提交体 |
+| `TimeWarBean` | 异常上报体 |
+
+---
+
+## 11. 查询功能表
+
+### 11.1 页面表
+
+| 功能子项 | 页面/类 | 说明 |
+|---|---|---|
+| 查询主页面 | `InquiryActivity` | 柜体柜门选择、扫码查询、开门 |
+| 查询页签一 | `QueryOneFragment` | 当前柜门库存列表 |
+| 查询页签二 | `QueryTwoFragment` | 标签/库存详情 |
+| 详情弹窗 | `PromptDialog` `ScanCodeDialog` | 根据登录态显示不同详情 |
+
+### 11.2 接口表
+
+| 接口 | 方法 | 用途 |
+|---|---|---|
+| `chemical/aio/getCabinetList` | `getCabinetList` | 查询柜体柜门 |
+| `chemical/aio/indexDetailbyRfid` | `indexDetailbyRfid` | 未登录态按 RFID 查询 |
+| `chemical/aio/getStockDetailsByCode` | `getStockDetailsByCode` | 登录态按 RFID/标签查询 |
+| `chemical/aio/lockOperate` | `lockOperate` | 柜门开锁 |
+| `chemical/aio/getLockStatus` | `getLocks` | 锁状态轮询 |
+
+### 11.3 模型表
+
+| 模型 | 用途 |
+|---|---|
+| `RuleBean` | 柜体柜门容器 |
+| `CabinetDoorVo` | 柜门 item |
+| `UseNoBean` | 未登录态查询结果 |
+| `UseNoTwoBean` | 登录态查询结果 |
+| `LockVoListBean` | 柜锁明细 |
+
+---
+
+## 12. 标签/RFID 管理功能表
+
+### 12.1 页面表
+
+| 功能 | 页面/类 | 说明 |
+|---|---|---|
+| 标签列表与详情 | `ChemicalLabelingActivity` | 标签查询、详情查看、补打、换 RFID、定位开柜 |
+| RFID 输入/更换 | `AirBottleDialog` `AirBottleNewDialog` | 补写/改写 RFID |
+
+### 12.2 接口表
+
+| 接口 | 方法 | 用途 |
+|---|---|---|
+| `chemical/aio/tagDetailsList` | `tagDetailsList` | 标签列表查询 |
+| `chemical/aio/getDetailsById` | `getDetailsById` | 标签详情 |
+| `chemical/aio/updateRfid` | `updateRfid` | 更新 RFID |
+| `chemical/aio/lockOperate` | `lockOperate` | 打开柜门定位 |
+| `chemical/aio/getLockStatus` | `getLocks` | 锁状态轮询 |
+
+### 12.3 模型表
+
+| 模型 | 用途 |
+|---|---|
+| `QueryTwoBean` | 标签列表分页 |
+| `ReturnDetailsBean` | 标签详情回显 |
+| `LockVoListBean` | 柜锁信息 |
+
+---
+
+## 13. 电子台账功能表
+
+### 13.1 页面表
+
+| 功能 | 页面/类 | 说明 |
+|---|---|---|
+| 电子台账容器 | `LedgerActivity` | 切换使用台账/库存台账 |
+| 使用台账 | `UseLedgerFragment` | 按柜门/类别/级别/时间查询使用记录 |
+| 库存台账 | `InventoryIedgerFragment` | 按柜门/类别/级别/出库方式查询库存记录 |
+| 待归还清单 | `ChecklistsActivity` | 使用台账中的待归还入口 |
+
+### 13.2 接口表
+
+| 接口 | 方法 | 用途 |
+|---|---|---|
+| `chemical/aio/useRecords` | `useRecords` | 使用台账查询 |
+| `chemical/aio/stockLedger` | `stockLedger` | 库存台账查询 |
+| `chemical/aio/useReturnList` | `useReturnList` | 待归还清单 |
+| `system/dict/item/option` | `getOptions` | 化学品类别字典 |
+
+### 13.3 模型表
+
+| 模型 | 用途 |
+|---|---|
+| `UseLedBean` | 使用台账分页 |
+| `InventoryListBean` | 库存台账分页 |
+| `ChemicalTypeBean` | 化学品类别字典 |
+
+### 13.4 台账筛选字段表
+
+| 页面 | 筛选项 | 字段 |
+|---|---|---|
+| `UseLedgerFragment` | 月份 | `numberMonths` |
+| `UseLedgerFragment` | 类别 | `chemicalCategory` |
+| `UseLedgerFragment` | 级别 | `chemicalLevel` |
+| `UseLedgerFragment` | 柜体/柜门 | `cabinetId` `doorId` |
+| `InventoryIedgerFragment` | 月份 | `numberMonths` |
+| `InventoryIedgerFragment` | 类别 | `chemicalCategory` |
+| `InventoryIedgerFragment` | 级别 | `chemicalLevel` |
+| `InventoryIedgerFragment` | 出库方式 | `status` |
+
+---
+
+## 14. 预警事件功能表
+
+### 14.1 页面表
+
+| 功能 | 页面/类 | 说明 |
+|---|---|---|
+| 预警列表 | `WarningEventsActivity` | 预警统计、分页、筛选 |
+| 预警详情/处理 | `ProcessedActivity` | 查看详情、提交处理备注 |
+
+### 14.2 接口表
+
+| 接口 | 方法 | 用途 |
+|---|---|---|
+| `system/aioUnify/warningNoticeCount` | `warningNoticeCount` | 获取预警总数 |
+| `system/aioUnify/warningNoticeList` | `warningNoticeList` | 查询预警列表 |
+| `system/aioUnify/warningNoticeDetail` | `warningNoticeDetail` | 查询预警详情 |
+| `system/warningNotice/handleMessage` | `handleMessage` | 提交处理说明 |
+
+### 14.3 模型表
+
+| 模型 | 用途 |
+|---|---|
+| `EarlyWarningBean` | 预警列表分页 |
+| `ProcessedBean` | 预警详情/处理结果 |
+
+### 14.4 筛选项表
+
+| 筛选项 | 字段 | 备注 |
+|---|---|---|
+| 处理状态 | `noticeStatus` | `0` 待处理,`1` 已处理 |
+| 时间范围 | `timeType` | 近一月 / 近三月 |
+| 指定日期 | `warnTime` | 日期筛选 |
+
+---
+
+## 15. MSDS 功能表
+
+### 15.1 页面表
+
+| 功能 | 页面/类 | 说明 |
+|---|---|---|
+| MSDS 列表与预览 | `MsdsActivity` | 搜索、列表、HTML 展示、二维码 |
+| MSDS 全屏查看 | `MsdsScreenActivity` | 全屏文档查看 |
+
+### 15.2 接口表
+
+| 接口 | 方法 | 用途 |
+|---|---|---|
+| `chemical/aio/msds` | `getMsdsDetails` | 搜索 MSDS 列表 |
+| `chemical/aio/msdsDetails` | `msdsDetails` | 查询单条文档详情 |
+
+### 15.3 模型表
+
+| 模型 | 用途 |
+|---|---|
+| `MsdsBean` | MSDS 列表分页 |
+| `MsdsListBean` | 单条 MSDS 详情 |
+
+---
+
+## 16. 设置与设备运维功能表
+
+### 16.1 设置页功能表
+
+| 功能 | 页面/类 | 说明 |
+|---|---|---|
+| 服务地址配置 | `SettingActivity` | 保存 HTTP/图片/二维码基础地址 |
+| 管理员密码 | `SettingActivity` | 主页隐藏入口密码 |
+| 蓝牙秤绑定 | `SettingActivity` + `BleSelectorDialog` | 扫描并绑定 `sppMac/sppName` |
+| 相机方向 | `SettingActivity` | 前后摄配置 |
+| 系统操作 | `SettingActivity` + `Tool` | 重启、打开系统设置、文件浏览器、状态栏控制 |
+
+### 16.2 设备接口表
+
+| 接口/工具 | 类型 | 用途 |
+|---|---|---|
+| `iot/aio/report` | 后端接口 | 设备绑定实验室 / 版本上报 |
+| `terminal/machine/heartbeat` | 后端接口 | 心跳上报 |
+| `onepcApkUpdate` | 后端接口 | APK 升级状态回传 |
+| `Tool` | 本地工具 | su 命令、重启、状态栏、设置 |
+| `HttpTool.getCheck()` | 本地 HTTP 工具 | 启动校验设备信息 |
+| `HttpTool.heartbeat()` | 本地 HTTP 工具 | 心跳 |
+
+---
+
+## 17. 硬件接入功能表
+
+### 17.1 硬件能力表
+
+| 硬件/能力 | 主要类 | 说明 |
+|---|---|---|
+| 摄像头/人脸 | `FaceLoginActivity` `TwoVerificationActivity` | 登录与双人认证 |
+| 刷卡/扫码输入 | `PortScanHelper` `UsbReceiver` `PortScanService` | 键盘流/USB 输入统一分发 |
+| 蓝牙秤 | `SppTool` `BluetoothHelper` `BluetoothWeighDialog` | 入库/领用/归还称重 |
+| 智能柜锁 | `lockOperate` `getLocks` + 各业务页 `openLock()` | 柜门控制 |
+| 标签打印 | `PrintTool` | 打印化学品标签并切纸 |
+| Web 文档引擎 | `QbSdk` `WebViewHelper` | MSDS 展示 |
+
+### 17.2 蓝牙秤相关表
+
+| 类/页面 | 用途 | 关键点 |
+|---|---|---|
+| `SppTool` | 蓝牙 SPP 封装 | 连接、收包、断开 |
+| `BluetoothHelper` | 旧版蓝牙连接实现 | RFCOMM 连接特定设备 |
+| `BluetoothWeighDialog` | 入库称重校验 | 规格/净含量/称重值比较,再调 `addStockCheck` |
+| `UseActivity` | 领用称重 | 页面内蓝牙接秤 |
+| `ChemicalsAlsoActivity` | 归还称重 | 页面内蓝牙接秤 |
+
+### 17.3 打印相关表
+
+| 类/页面 | 用途 |
+|---|---|
+| `PrintTool` | 打印标签、切纸 |
+| `PrintLabelDialog` | 入库前标签打印确认 |
+| `ChemicalLabelingActivity` | 补打标签 |
+| `ChemicalsAlsoActivity` | 归还页补打标签 |
+
+---
+
+## 18. 核心业务模型表
+
+### 18.1 化学品域
+
+| 模型 | 说明 | 重点字段 |
+|---|---|---|
+| `ChemicalSearchBean` | 化学品搜索结果 | `chemicalId` `chemicalName` `casNum` `chemicalLevel` `specNum` `packNum` `msdsId` |
+| `HxpChemicalVo` | 入库/待入库主对象 | `chemicalLevel` `belongType` `joinType` `stockType` `doorUniqueId` `stockDetailsModelList` |
+| `ChemicalTypeBean` | 类别字典 | `label` `value` |
+| `ChemicalConfsBean` / `HxpControlConfig` | 化学品控制配置 | 是否打印、称重等 |
+
+### 18.2 柜体与锁域
+
+| 模型 | 说明 | 重点字段 |
+|---|---|---|
+| `RuleBean` | 柜体及柜门集合 | `cabinetId` `cabinetName` `cabinetDoorVoList` |
+| `CabinetDoorVo` | 柜门 | `doorUniqueId` `doorName` `verify` `isControl` `cabinetLockVoList` |
+| `LockVoListBean` | 单把锁 | `lockNum` `unlockingMethod` `isOk` |
+
+### 18.3 领用与归还域
+
+| 模型 | 说明 | 重点字段 |
+|---|---|---|
+| `UseBean` | RFID 领用详情 | 当前待领用化学品信息 |
+| `ChemistryBean` | 领用记录 item | 数量、出库方式、标签信息 |
+| `UsePostDataBean` | 领用提交体 | `userecordModelList` |
+| `ReturningChemicalsBean` | 待归还列表 | 分页记录 |
+| `ReturnDetailsBean` | 归还/废弃/标签详情 | `verify` `chemicalLevel` `cabinetLockVoList` |
+| `GiveBackBean` | 归还/废弃提交体 | 双人信息、称重、原因、状态 |
+| `ReturnGiveBackBean` | 归还后结果 | 回显使用量等 |
+
+### 18.4 台账与预警域
+
+| 模型 | 说明 |
+|---|---|
+| `UseLedBean` | 使用台账分页 |
+| `InventoryListBean` | 库存台账分页 |
+| `EarlyWarningBean` | 预警分页 |
+| `ProcessedBean` | 预警处理详情 |
+| `TimeWarBean` | 开锁后异常超时上报 |
+
+### 18.5 用户与配置域
+
+| 模型 | 说明 |
+|---|---|
+| `UserData` | 登录用户信息 |
+| `UserValidationBean` | 用户权限角色信息 |
+| `ConfigBean` | 实验室基础配置、登录方式、认证方式、超时配置 |
+| `LabInfo` | 设备绑定实验室信息 |
+
+---
+
+## 19. 关键配置字段速查表
+
+| 字段 | 模型 | 含义 |
+|---|---|---|
+| `loginType` | `ConfigBean` | 登录方式配置 |
+| `verifyType` | `ConfigBean` | 双人认证方式配置 |
+| `backTime` | `ConfigBean` | 自动返回时间 |
+| `signOutTime` | `ConfigBean` | 自动注销时间 |
+| `offTime` | `ConfigBean` | 弹窗关闭时间 |
+| `vinVex` | `ConfigBean` | 称重入库容差率 |
+| `chemicalLevel` | `ChemicalSearchBean` / `HxpChemicalVo` | 1 管控,2 非管控 |
+| `unlockingMethod` | `LockVoListBean` | 2 表示智能锁 |
+| `joinType` | `HxpChemicalVo` | 入库方式:1 称重,2 录入 |
+| `stockType` | `HxpChemicalVo` | 入库来源类型 |
+| `useStatus` | `GiveBackBean` | 归还/废弃状态 |
+
+---
+
+## 20. 接手开发建议
+
+### 20.1 如果你要改某个功能,优先看这些文件
+
+| 目标 | 优先看 |
+|---|---|
+| 改登录 | `MainActivity` `SwipeActivity` `ScanLoginActivity` `FaceLoginActivity` `UserValidationBean` |
+| 改双人认证 | `TwoVerificationActivity` `SharedPreferencesHelper` |
+| 改入库 | `PlanAddActivity` `PlanAddActivityHelp` `AddActivity` `AddActivityHelp` `UnlockActivity` |
+| 改领用 | `UseActivity` `UsageLabelDialog` |
+| 改归还/空瓶/废弃 | `ChemicalsAlsoActivity` `WasteChemicalsActivity` |
+| 改查询 | `InquiryActivity` `QueryOneFragment` `QueryTwoFragment` |
+| 改标签/RFID | `ChemicalLabelingActivity` `PrintTool` |
+| 改台账 | `LedgerActivity` `UseLedgerFragment` `InventoryIedgerFragment` |
+| 改预警 | `WarningEventsActivity` `ProcessedActivity` |
+| 改 MSDS | `MsdsActivity` `MsdsScreenActivity` |
+| 改设备设置 | `SettingActivity` `Tool` `SppTool` |
+
+### 20.2 如果你要改接口层,优先看这些文件
+
+| 层级 | 文件 |
+|---|---|
+| 接口声明 | `app/src/main/java/com/rc/httpcore/client/retrofit/ApiService.java` |
+| 请求封装 | `app/src/main/java/com/rc/httpcore/client/retrofit/ChemicalRetrofit.kt` |
+| 页面调用入口 | `app/src/main/java/com/rc/httpcore/client/ApiRepository.kt` |
+| HTTP 客户端 | `app/src/main/java/com/rc/httpcore/HttpClient.kt` |
+| 老接口直连 | `app/src/main/java/com/rc/httpcore/client/HttpTool.java` |
+
+### 20.3 如果你要改设备层,优先看这些文件
+
+| 能力 | 文件 |
+|---|---|
+| 系统控制 | `xn/hxp/utils/Tool.java` |
+| 蓝牙秤 | `xn/hxp/utils/bluetooth/SppTool.java` |
+| 蓝牙旧实现 | `xn/hxp/blu/BluetoothHelper.kt` |
+| USB/扫码输入 | `xn/hxp/receiver/UsbReceiver.kt` `xn/hxp/receiver/PortScanService.kt` |
+| 打印 | `xn/hxp/utils/PrintTool.java` |
+
+---
+
+## 21. 文档结论
+
+如果把这个项目压缩成一句话:
+
+> 这是一个以实验室安全柜为中心,把登录认证、双人授权、入库、领用、归还、废弃、标签、RFID、称重、台账、预警、MSDS 与终端设备能力整合在一起的实验室化学品智能管理终端。
+
+而从开发接手角度,最重要的三条主线是:
+
+1. **业务页主线**:`MainActivity -> 各业务 Activity`
+2. **认证主线**:`TwoVerificationActivity -> SharedPreferencesHelper -> 各业务提交体`
+3. **接口主线**:`ApiService -> ChemicalRetrofit -> ApiRepository -> UI`
+
+---
+
+## 22. 扩展表:功能 -> 页面 -> 接口 -> 模型 -> 关键适配器/对话框
+
+本章是在前文基础上的 UI 依赖增强版,重点补充每个功能线的:
+
+- 关键适配器
+- 关键对话框
+- 常用辅助控件/Fragment
+
+### 22.1 登录认证扩展表
+
+| 功能 | 主页面 | 主要接口 | 关键模型 | 关键适配器/对话框/控件 |
+|---|---|---|---|---|
+| 刷卡登录 | `SwipeActivity` | `cardNum` `userCardValidation` | `UserData` `UserValidationBean` | `AuthenticationDialog` `PortScanHelper` `UsbReceiver` |
+| 扫码登录 | `ScanLoginActivity` | `getScanCode` / 扫码认证链路 | `UserData` | 二维码/扫码输入控件、`PortScanHelper` |
+| 人脸登录 | `FaceLoginActivity` | `faceNewCompare` | `UserData` | 摄像头、Fotoapparat、人脸检测相关 UI |
+| 人脸+刷卡 | `FacialCardActivity` | 组合认证 | `UserData` | 刷卡输入 + 摄像头识别 UI |
+| 登录结果确认 | 多登录页共用 | 无 | 登录人信息 | `AuthenticationDialog` `CustomDialog` |
+
+### 22.2 双人认证扩展表
+
+| 功能 | 主页面 | 主要接口 | 关键模型 | 关键适配器/对话框/控件 |
+|---|---|---|---|---|
+| 双人人脸/刷卡/扫码组合认证 | `TwoVerificationActivity` | `useCardVerify` `aioScanLogin` `checkUserFaceByPic` | `UserValidationBean` `DoubleDialogBean` | `DoublePeopleDialog` `CustomDialog` `PortScanHelper` `UsbReceiver` 二维码 ImageView |
+| 双人认证历史兼容页 | `TwoPersonActivity` `SwipeCodeTwoActivity` `ScanCodeTwoActivity` | 认证相关接口 | `UserValidationBean` | 旧版组合认证页面 |
+| 双人认证结果承接 | 业务页侧 | 无 | `DoubleDialogBean` | `SharedPreferencesHelper` |
+
+### 22.3 新增入库扩展表
+
+| 功能 | 主页面 | 主要接口 | 关键模型 | 关键适配器/对话框/控件 |
+|---|---|---|---|---|
+| 计划入库总控 | `PlanAddActivity` | `getRelList` `getCabinetListBySub` `addStock` | `ChemicalInfoBean` `InventoryItemBean` `HxpChemicalVo` | `PlanAdapter` `LockerAdapter` `LockerFragment` |
+| 扫码录入 | `PlanAddActivityHelp` | `scanCodeChemical` | `HxpChemicalVo` | `PortScanHelper` |
+| 手动录入 | `AddActivity` | `searchChemica` `getOptions` `getSelects` `getTopicList` | `HxpChemicalVo` `ChemicalTypeBean` `BelongingPersonBean` `TopicDataBean` | `ChemicalTypeDialog` `BelongingPersonDialog` `SelectTopicDialog` `SelectChemicalDialog` |
+| 标签打印确认 | `AddActivityHelp` | `getControlConfigs` `certitude` | `HxpControlConfig` `HxpChemicalVo` | `PrintLabelDialog` |
+| 蓝牙称重校验 | `BluetoothWeighDialog` | `addStockCheck` | `HxpChemicalVo` | 称重提示图、净含量输入框、蓝牙连接态 UI |
+| 柜门开锁 | `UnlockActivity` | `lockOperate` `getLocks` | 柜门/锁模型 | `UnlockAdapter` `CustomDialog` |
+| 入库完成 | `SaveListActivity` | 无 | 结果数据 | 结果列表 UI |
+| 已申领未入库 | `AlreadyActivity` | `getHxpStockWait` | `AlreadyBean` | `AlreadyAdapter` `PlanDialog` `SelectAlreadyDialog` |
+
+### 22.4 领用扩展表
+
+| 功能 | 主页面 | 主要接口 | 关键模型 | 关键适配器/对话框/控件 |
+|---|---|---|---|---|
+| 柜门选择与列表 | `UseActivity` | `getCabinetList` `getStockList` | `RuleBean` `LockVoListBean` | `CabinetDoorAdapter` `CabinetDoorRighAdapter` `UseListAdapter` |
+| 柜门双人认证 | `UseActivity -> TwoVerificationActivity` | `useCardVerify` `aioScanLogin` `checkUserFaceByPic` | `UserValidationBean` | `CustomDialog` |
+| 开门后领用工作台 | `UsageLabelDialog` | `getByRfid` | `UseBean` `ChemistryBean` | `UsageLabelDialogAdapter` |
+| 称重/录入 | `UseActivity` / `WeighDialog` | 页面内蓝牙逻辑 | `ChemistryBean` | `WeighDialog` 蓝牙提示 UI |
+| 再次开门 | `UsageLabelDialog.openLock()` | `lockOperate` | `LockVoListBean` | 柜门状态提示音/弹窗 |
+| 异常退出上报 | `UseActivity` | `outTimeWarn` | `TimeWarBean` | `CustomDialog` |
+
+### 22.5 归还/空瓶/废弃回流扩展表
+
+| 功能 | 主页面 | 主要接口 | 关键模型 | 关键适配器/对话框/控件 |
+|---|---|---|---|---|
+| 待归还列表 | `ChemicalsAlsoActivity` | `useList` | `ReturningChemicalsBean` | `ReturningChemicalsAdapter` |
+| 扫描进入详情 | `ChemicalsAlsoActivity` | `backDetail` | `ReturnDetailsBean` | `PortScanHelper` `UsbReceiver` |
+| 正常归还 | `ChemicalsAlsoActivity` | `giveBack` `returnGiveBack` | `GiveBackBean` `ReturnGiveBackBean` | 柜门开门提示、归还称重 UI |
+| 空瓶处理 | `ChemicalsAlsoActivity` | `giveBack` | `GiveBackBean` | `EmptiesDialog` |
+| 废弃处理 | `ChemicalsAlsoActivity` | `giveBack` | `GiveBackBean` | `DiscardDialog` |
+| RFID 更换/补打 | `ChemicalsAlsoActivity` | `updateRfid` | `ReturnDetailsBean` | `AirBottleDialog` `AirBottleNewDialog` |
+| 柜门开门 | `ChemicalsAlsoActivity` | `lockOperate` `getLocks` | `LockVoListBean` | `CabinetOpenDialog` `CustomDialog` |
+| 柜位过滤 | `ChemicalsAlsoActivity` | `getCabinetList` | `RuleBean` | `StorageDialog` |
+
+### 22.6 废弃出库扩展表
+
+| 功能 | 主页面 | 主要接口 | 关键模型 | 关键适配器/对话框/控件 |
+|---|---|---|---|---|
+| 废弃列表 | `WasteChemicalsActivity` | `stockDetailsList` | `WasteChemicalsBean` | `WasteChemicalsAdapter` |
+| 扫描获取详情 | `WasteChemicalsActivity` | `discardDetail` | `ReturnDetailsBean` | `PortScanHelper` `UsbReceiver` |
+| 输入废弃原因 | `WasteChemicalsActivity` | `giveBack` | `GiveBackBean` | `DiscardDialog` |
+| 柜门开门 | `WasteChemicalsActivity` | `lockOperate` `getLocks` | `LockVoListBean` | `StorageDialog` `CustomDialog` |
+| 异常开门退出 | `WasteChemicalsActivity` | `outTimeWarn` | `TimeWarBean` | 提示弹窗/返回计时 UI |
+
+### 22.7 查询扩展表
+
+| 功能 | 主页面 | 主要接口 | 关键模型 | 关键适配器/对话框/控件 |
+|---|---|---|---|---|
+| 柜体/柜门查询 | `InquiryActivity` | `getCabinetList` | `RuleBean` `LockVoListBean` | `CabinetDoorAdapter` `CabinetDoorRighAdapter` |
+| 查询页签一 | `QueryOneFragment` | `indexStockList` 等 | 库存查询模型 | 列表 RecyclerView |
+| 查询页签二 | `QueryTwoFragment` | `indexDetailsList` 等 | 详情查询模型 | 列表 RecyclerView |
+| 未登录扫码查询 | `InquiryActivity` | `indexDetailbyRfid` | `UseNoBean` | `PromptDialog` |
+| 已登录扫码查询 | `InquiryActivity` | `getStockDetailsByCode` | `UseNoTwoBean` | `ScanCodeDialog` |
+| 查询场景开门 | `InquiryActivity` | `lockOperate` `getLocks` | `LockVoListBean` | `CustomDialog` |
+
+### 22.8 标签/RFID 管理扩展表
+
+| 功能 | 主页面 | 主要接口 | 关键模型 | 关键适配器/对话框/控件 |
+|---|---|---|---|---|
+| 标签列表 | `ChemicalLabelingActivity` | `tagDetailsList` | `QueryTwoBean` | `ChemicalLabelingAdapter` `CustomSpinnerTwoAdapter` |
+| 标签详情 | `ChemicalLabelingActivity` | `getDetailsById` | `ReturnDetailsBean` | 详情区 UI |
+| 补打标签 | `ChemicalLabelingActivity` | 无 | `PrintBean` `ReturnDetailsBean` | `PrintTool` |
+| 更换 RFID | `ChemicalLabelingActivity` | `updateRfid` | `ReturnDetailsBean` | `AirBottleDialog` `AirBottleNewDialog` |
+| 柜门开门定位 | `ChemicalLabelingActivity` | `lockOperate` `getLocks` | `LockVoListBean` | `StorageDialog` `CustomDialog` |
+| 标签场景双人认证 | `ChemicalLabelingActivity -> TwoVerificationActivity` | 认证链路接口 | `UserValidationBean` | 认证 UI |
+
+### 22.9 电子台账扩展表
+
+| 功能 | 主页面 | 主要接口 | 关键模型 | 关键适配器/对话框/控件 |
+|---|---|---|---|---|
+| 台账容器页 | `LedgerActivity` | 无 | 无 | `SwipeViewPager` `TabFragmentPagerAdapter` |
+| 使用台账 | `UseLedgerFragment` | `useRecords` `getOptions` | `UseLedBean` `ChemicalTypeBean` | `UseLedgerAdapter` `CabinetDoorAdapter` `CabinetDoorRighAdapter` `ChemicalTypeDialog` `StorageDialog` |
+| 待归还入口 | `UseLedgerFragment` | 无 | 无 | 跳转 `ChecklistsActivity` |
+| 库存台账 | `InventoryIedgerFragment` | `stockLedger` `getOptions` | `InventoryListBean` `ChemicalTypeBean` | `InventoryAdapter` `CabinetDoorAdapter` `CabinetDoorRighAdapter` `ChemicalTypeDialog` `StorageDialog` `CustomSpinnerTwoAdapter` |
+
+### 22.10 预警事件扩展表
+
+| 功能 | 主页面 | 主要接口 | 关键模型 | 关键适配器/对话框/控件 |
+|---|---|---|---|---|
+| 预警列表 | `WarningEventsActivity` | `warningNoticeList` `warningNoticeCount` | `EarlyWarningBean` | `WarningEventsAdapter` `DatePickDialog` |
+| 预警详情/处理 | `ProcessedActivity` | `warningNoticeDetail` `handleMessage` | `ProcessedBean` | 详情与处理表单 UI |
+
+### 22.11 MSDS 扩展表
+
+| 功能 | 主页面 | 主要接口 | 关键模型 | 关键适配器/对话框/控件 |
+|---|---|---|---|---|
+| MSDS 列表 | `MsdsActivity` | `getMsdsDetails` | `MsdsBean` | `MsdsListAdapter` |
+| 文档详情预览 | `MsdsActivity` | `msdsDetails` | `MsdsListBean` | `WebViewHelper` `VideoFullScreenWebChromeClient` |
+| 全屏查看 | `MsdsScreenActivity` | 文档展示 | `MsdsListBean` | 全屏 WebView |
+
+### 22.12 设置与设备运维扩展表
+
+| 功能 | 主页面 | 主要接口/工具 | 关键模型 | 关键适配器/对话框/控件 |
+|---|---|---|---|---|
+| 服务地址/管理员密码/相机配置 | `SettingActivity` | `SharedPreferencesHelper` | `SettingsBean` | 表单输入控件 |
+| 蓝牙秤设备选择 | `SettingActivity` | `SppTool` | 本地 SP 配置 | `BleSelectorDialog` |
+| 系统控制 | `SettingActivity` | `Tool` | 无 | 系统按钮 |
+| 心跳与设备状态 | `MainActivity` | `HttpTool.heartbeat()` | 无 | 心跳计时器 |
+
+### 22.13 设备工具与通用组件扩展表
+
+| 类/组件 | 类型 | 主要服务对象 | 用途 |
+|---|---|---|---|
+| `PrintTool` | 工具类 | 入库/标签/归还页 | USB 标签打印与切纸 |
+| `BluetoothWeighDialog` | 对话框 | 入库 | 蓝牙秤接入与称重校验 |
+| `SppTool` | 工具类 | 入库/领用/归还 | 蓝牙串口秤连接 |
+| `Tool` | 工具类 | 启动页/设置页/全局 | 设备系统控制 |
+| `StorageDialog` | 对话框 | 归还/废弃/台账/标签 | 柜体柜门筛选 |
+| `CustomDialog` | 对话框 | 全局 | 通用业务提示/异常提示 |
+| `PlanDialog` | 对话框 | 主页入库入口 | 待入库/新增分流 |
+| `PortScanHelper` | 工具类 | 登录/查询/领用/归还/废弃 | 扫码/刷卡输入分发 |
+| `UsbReceiver` | 广播接收器 | 登录/查询/领用/归还/废弃 | USB 设备监听 |
+
+### 22.14 推荐使用方式
+
+如果你后续继续扩展文档,建议按以下模板补充:
+
+| 功能 | 页面 | 接口 | 模型 | 适配器/对话框 |
+|---|---|---|---|---|
+| 某功能 | 某 Activity/Fragment | 某 API | 某 Bean | 某 Adapter/Dialog |
+
+这样后续无论做:
+
+- 需求评审
+- Bug 定位
+- 页面重构
+- 接口替换
+- 新同事交接
+
+都可以直接沿着同一张表往下查。

+ 12 - 1
gradle.properties

@@ -19,4 +19,15 @@ android.useAndroidX=true
 # resources declared in the library itself and none from the library's dependencies,
 # thereby reducing the size of the R class for that library
 android.nonTransitiveRClass=true
-android.enableJetifier = true
+android.enableJetifier = true
+# ????????? M4 Pro ????
+# org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m
+
+# ?? Gradle ??? HTTP ??
+systemProp.http.proxyHost=127.0.0.1
+systemProp.http.proxyPort=7890
+systemProp.https.proxyHost=127.0.0.1
+systemProp.https.proxyPort=7890
+
+# ??????????????????????????? IP?
+systemProp.http.nonProxyHosts=localhost|127.0.0.1|192.168.*

+ 0 - 0
gradlew


+ 1 - 1
settings.gradle

@@ -20,6 +20,6 @@ dependencyResolutionManagement {
     }
 }
 
-rootProject.name = "化学品终端"
+rootProject.name = "chemClient"
 include ':app'
 include ':serialport'