PDA / GPDA 扫码盘点与仓内作业
本文整理 DGJ2.0 PDA、GPDA 相关的移动仓内作业,包括采购签收/入库、销售出库、盘点、货位调整、出库验货。它和 PC 端库存逻辑共用大量库存表,是库存一致性问题的重要入口。
业务目标
- 服务站用 PDA 扫码完成采购签收、入库上架、销售出库、盘点和货位调整。
- GPDA 提供更偏仓内任务的盘点、扫码、结果导出和 SKU 数量同步。
- 所有 PDA/GPDA 的最终结果都要落到业务单据、库存流水、实时库存和操作日志里。
适用场景
- PDA 扫码入库后库存没增加。
- 销售出库 PDA 扫码成功,但出库单状态或库存不对。
- 盘点单提交后盘盈盘亏未落流水。
- GPDA 任务状态和 PC 端盘点状态不一致。
- 货位调整后商品还在旧货位。
入口文件
- PDA 登录和首页:
application/controllers/pda/User.php - PDA 公共接口:
application/controllers/pda/Common.php - PDA 采购签收/入库:
application/controllers/pda/Purchase.php - PDA 销售出库:
application/controllers/pda/Sale.php - PDA 盘点:
application/controllers/pda/TakeStock.php - PDA 货位调整:
application/controllers/pda/AreaChange.php - PDA 出库验货:
application/controllers/pda/OutStockCheck.php - GPDA 盘点:
application/controllers/inner/gpda/TakeStock.php - GPDA 门店:
application/controllers/inner/gpda/GpdaStore.php - GPDA 后台库存:
application/controllers/inner/gpda.back/Inventory.php
核心 Service
application/Services/Pda/UserSer.phpapplication/Services/Pda/SaleSer.phpapplication/Services/Pda/TakeStockSer.phpapplication/Services/Pda/AreaChangeSer.phpapplication/Services/Pda/OutStockCheckSer.phpapplication/Services/Pda/PdaOptionSer.phpapplication/Services/Gpda/TakeStockSer.phpapplication/Services/Gpda/InventorySer.php- 库存写入最终要关注:
application/Services/Storage/InventorySer.php
核心表
| 表 | 用途 | | --- | --- | | t_scm_inventory_check | 盘点主表 | | t_scm_inventory_check_info | 盘点明细,按 sid 个位存在分表口径 | | t_sys_pda_option_log | PDA 操作日志 | | t_scm_inventory / t_scm_inventory_info | 库存流水 | | t_scm_inventory_real_time | 实时库存 | | t_scm_pu_invoice / t_scm_pu_invoice_info | 采购入库 | | t_scm_sa_invoice / t_scm_sa_invoice_info | 销售出库 | | t_bs_storage / t_bs_storage_area | 仓库和货位 |
关键接口地图
PDA 采购
getWmsList:采购待签收/仓库任务列表。getWmsInfo:采购任务详情。getFydInfo:发运单信息。getSignBoxInfo、getSignBoxResInfo:箱维度签收信息。getSignComfirm、signIn:签收确认和签收入库前动作。getInStoList、getInStoDetail:入库列表和详情。getInStroComfirm、inStoIn:入库确认。getStoAreaList、getAreaList:仓库/货位选择。
PDA 销售
getSaleList:待出库销售列表。getSaleInfo:销售出库详情。geAreaStockData:查货位库存。saleStockOut:扫码出库,最终影响出库单和库存。
PDA / GPDA 盘点
getBillAddPage:盘点新增页面数据。getPddList、getPddInfo:盘点列表和主单信息。addPdd/gaddPdd:创建盘点单。getScanData/ggetScanData:扫描记录。addScanData/gaddScanData:新增扫码数据。upPddStatus/gupPddStatus:盘点状态推进。exportPddResult:GPDA 盘点结果导出。
PDA 货位调整和验货
AreaChange::getInvByScan:扫码找商品。AreaChange::getAreaByScan:扫码找货位。AreaChange::submit/batchSubmit:提交货位调整。OutStockCheck::scan:出库验货扫码。OutStockCheck::check:验货确认。
主流程
flowchart TD
A["PDA 登录"] --> B["选择采购/销售/盘点/货位调整"]
B --> C["扫码识别商品、箱码、货位或单据"]
C --> D["校验服务站、仓库、货位、商品状态"]
D --> E["写业务单据或扫描明细"]
E --> F["提交确认"]
F --> G["写库存流水"]
G --> H["更新实时库存"]
H --> I["记录 PDA 操作日志"]
异常流程
- 扫码找不到商品:查条码、
skuId、invId、商品状态、是否被合并。 - 找不到货位:查
t_bs_storage_area、仓库状态、货位是否属于当前服务站。 - 入库重复提交:查入库单状态、PDA 操作日志、库存流水是否已写。
- 盘点重复提交:查盘点状态、盘点明细和盘盈盘亏流水。
- GPDA 和 PDA 数据不一致:确认是否同一个
sid、仓库、盘点单、任务号。
常用排查 SQL
-- 查盘点主单和明细
select * from t_scm_inventory_check where sid = :sid and billNo = :bill_no;
select * from t_scm_inventory_check_info where sid = :sid and PDDId = :pdd_id;
-- 查 PDA 操作日志
select * from t_sys_pda_option_log where sid = :sid order by id desc limit 50;
-- 查货位实时库存
select * from t_scm_inventory_real_time
where sid = :sid and invId = :inv_id and locationId = :location_id;
常用 rg 命令
rg -n "class Purchase|signIn|inStoIn|getInSto" application/controllers/pda application/Services/Pda
rg -n "saleStockOut|geAreaStockData|OutStockCheck" application/controllers/pda application/Services/Pda
rg -n "gaddPdd|gaddScanData|exportPddResult|sendStatusChangeMsg" application/controllers/inner/gpda application/Services/Gpda
rg -n "SYS_PDA_OPTION_LOG|SCM_INVENTORY_CHECK|SCM_INVENTORY_REAL_TIME" application
改动风险和回归清单
- 采购签收:箱码、发运单、签收确认、重复签收。
- 采购入库:货位选择、入库确认、库存流水、实时库存。
- 销售出库:扫码验货、货位扣减、出库单状态。
- 盘点:新增、扫码、提交、盘盈盘亏、导出。
- 货位调整:单品调整、批量调整、旧货位扣减、新货位增加。
- 登录安全:PDA 登录状态、账号锁定、服务站权限。