26 KiB
26 KiB
业务功能
**本文引用的文件** - [InventoryController.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InventoryController.java) - [MaterialController.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/MaterialController.java) - [InProduceOrderController.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java) - [OutProduceController.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java) - [InProduceBackController.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceBackController.java) - [PurchaseReturnController.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/PurchaseReturnController.java) - [OutPurchaseController.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutPurchaseController.java) - [NormalQMController.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalQMController.java) - [LocationTransferController.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/LocationTransferController.java) - [TransferCompanyController.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TransferCompanyController.java) - [StorageVO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/StorageVO.java) - [WmsOutPurchase.java](file://nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsOutPurchase.java) - [WmsOutPurchaseItem.java](file://nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsOutPurchaseItem.java) - [OutPurchaseVO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OutPurchaseVO.java) - [InProduceBackVO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InProduceBackVO.java) - [InProduceInfoVO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InProduceInfoVO.java) - [InCostcenterBackInfoItemVO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InCostcenterBackInfoItemVO.java) - [QCReceiveDTO.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/dto/QCReceiveDTO.java) - [WmsTransferOrders.java](file://nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsTransferOrders.java) - [DeliverNormalOrderVO.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverNormalOrderVO.java) - [WmsNormalPrintOrder.java](file://nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsNormalPrintOrder.java)目录
简介
本文件面向NFLG WMS系统的业务功能,围绕仓储管理、物料管理、订单处理、生产管理、采购与销售管理以及质量管理六大板块,系统化梳理各模块的业务流程、操作步骤与关键配置,并提供流程图与时序图帮助理解。文档同时给出常见问题排查建议与最佳实践,便于不同背景用户快速上手与优化使用。
项目结构
- 业务控制层集中在 nflg-wms-admin 模块的 controller 包下,按功能域划分(库存、物料、生产、采购退货、质检等)。
- 数据模型与查询对象位于 nflg-wms-common 的 pojo 与 qo 包,统一对外输出 VO 与输入 QO。
- 数据持久化实体位于 nflg-wms-repository 的 entity 包,服务接口位于 repository/service 接口包。
- 系统通过 BaseController 统一返回 ApiResult,结合分页 PageData 输出结果。
graph TB
subgraph "控制层"
IC["InventoryController<br/>库存查询/盘点/推荐出库"]
MC["MaterialController<br/>物料基础/分类/导入导出"]
IPC["InProduceOrderController<br/>生产入库(PDA)"]
OPC["OutProduceController<br/>生产领料/补料/出库"]
IPBC["InProduceBackController<br/>生产退料入库"]
PRC["PurchaseReturnController<br/>采购退货申请/审核/导出"]
OPCU["OutPurchaseController<br/>采购退库(出库)"]
NQC["NormalQMController<br/>质检任务/上架/不合格处理"]
LTC["LocationTransferController<br/>储位调拨"]
TCC["TransferCompanyController<br/>公司间转储"]
end
subgraph "通用模型"
VO["StorageVO<br/>库存位置VO"]
DTO["QCReceiveDTO<br/>质检入库DTO"]
end
subgraph "持久化实体"
WOP["WmsOutPurchase<br/>采购退库主表"]
WOI["WmsOutPurchaseItem<br/>采购退库明细"]
WTO["WmsTransferOrders<br/>转储单实体"]
end
IC --> VO
NQC --> DTO
OPCU --> WOP
OPCU --> WOI
LTC --> WTO
图表来源
- InventoryController.java:1-325
- MaterialController.java:1-180
- InProduceOrderController.java:1-684
- OutProduceController.java:1-831
- InProduceBackController.java:1-442
- PurchaseReturnController.java:1-548
- OutPurchaseController.java:1-366
- NormalQMController.java:1-487
- LocationTransferController.java:1-120
- TransferCompanyController.java:1-869
- StorageVO.java:1-87
- QCReceiveDTO.java:1-41
- WmsOutPurchase.java:1-68
- WmsOutPurchaseItem.java:63-108
- WmsTransferOrders.java:59-104
章节来源
- InventoryController.java:1-325
- MaterialController.java:1-180
- InProduceOrderController.java:1-684
- OutProduceController.java:1-831
- InProduceBackController.java:1-442
- PurchaseReturnController.java:1-548
- OutPurchaseController.java:1-366
- NormalQMController.java:1-487
- LocationTransferController.java:1-120
- TransferCompanyController.java:1-869
- StorageVO.java:1-87
- QCReceiveDTO.java:1-41
- WmsOutPurchase.java:1-68
- WmsOutPurchaseItem.java:63-108
- WmsTransferOrders.java:59-104
核心组件
- 库存查询与推荐出库:支持按工厂/仓库/物料维度查询库存,提供FIFO推荐出库批次组合。
- 物料管理:支持物料基础信息维护、分类查询、导入导出、批量图片上传等。
- 生产入库/出库/退料:覆盖生产入库(含齐套/扫描)、生产领料/补料(含SAP接口)、生产退料入库与出库单据。
- 采购与销售:支持采购退货申请/审核/导出、采购退库出库、销售出库相关单据(如交付单、打印单等)。
- 质量管理:支持质检任务下发、PDA扫码上架、合格/不合格品处理、SAP过账联动。
- 储位与转储:支持储位调拨与公司间转储,含PDA出库/入库流程与单据导出。
章节来源
- InventoryController.java:67-323
- MaterialController.java:44-178
- InProduceOrderController.java:128-626
- OutProduceController.java:109-800
- InProduceBackController.java:92-442
- PurchaseReturnController.java:83-548
- OutPurchaseController.java:29-366
- NormalQMController.java:82-487
- LocationTransferController.java:65-120
- TransferCompanyController.java:246-869
架构总览
系统采用前后端分离,控制层通过统一返回体 ApiResult 输出,业务控制器协调服务层与SAP接口,持久化实体通过MyBatis-Plus Mapper/Service访问数据库。
graph TB
FE["前端(PDA/PC)"] --> API["控制层(REST)"]
API --> SVC["服务层(业务编排)"]
SVC --> SAP["SAP接口"]
SVC --> DB["数据库(MyBatis-Plus)"]
API --> VO["VO/DTO/QO"]
图表来源
详细组件分析
仓储管理:库存查询与推荐出库
- 功能要点
- 库存查询:支持按工厂、仓库、物料、批次、序列号等多维过滤。
- 盘点任务:支持任务创建、发布、删除、PDA扫码、批量保存盘点结果、查看盘点明细。
- 推荐出库:按FIFO策略为每种物料推荐批次与数量组合,确保先进先出。
- 关键流程(推荐出库)
flowchart TD
Start(["开始"]) --> Load["加载工厂/仓库/物料集合"]
Load --> Query["查询可用库存(按批次/序列号)"]
Query --> FIFO["按FIFO顺序累加数量"]
FIFO --> Enough{"累计数量满足需求?"}
Enough --> |是| Build["组装批次/数量组合"]
Enough --> |否| Next["切换下一物料"]
Build --> Done(["结束"])
Next --> Load
图表来源
章节来源
储位管理与移库作业
- 储位调拨
- 支持查询转储信息、PDA执行转储、单据导出。
- 关键字段:工厂、库存地点、储位、物料、批次、序列号、单位等。
- 公司间转储
- 支持转储单创建、PDA出库、审核、导出转储单与转储凭证。
- 数据模型
- 转储单实体包含工厂、库存地点、物料、批次、序列号、单位等字段。
章节来源
- LocationTransferController.java:65-120
- TransferCompanyController.java:246-869
- WmsTransferOrders.java:59-104
物料管理:基础信息与分类
- 功能要点
- 新增/更新/搜索/批量获取物料信息。
- 导出未设置BOM、导出选择数据、导出搜索结果。
- 批量上传物料图片与ZIP压缩包。
- 获取物料分类、查询主物料系统物料信息。
- 关键流程(物料导入)
sequenceDiagram
participant U as "用户"
participant C as "MaterialController"
participant S as "MaterialControllerService"
U->>C : 上传Excel文件
C->>S : importFromExcel(file)
S-->>C : 返回导入结果
C-->>U : ApiResult.success()
图表来源
章节来源
订单处理:入库/出库/转储
- 入库订单(生产入库)
- 从SAP查询生产订单、保存订单、PDA收货入库、生成入库单据与条码。
- 关键字段:订单号、工厂、仓库、批次、序列号、数量、单位等。
- 出库订单(生产领料/补料)
- 从SAP查询领料/补料数据、保存订单、PDA提交、审核与SAP过账。
- 支持齐套物料与子码扫描、推荐批次校验。
- 转储单据
- 支持转储单导出、转储凭证导出,PDA出库/入库流程。
章节来源
- InProduceOrderController.java:128-626
- OutProduceController.java:109-800
- TransferCompanyController.java:246-869
生产管理:生产入库/出库/退料
- 生产入库
- PDA收货:校验扫码数量与订单数量一致性,更新二维码状态与库存。
- SAP过账:生成凭证号与年份,更新订单状态。
- 生产领料/补料
- 申请数量上限校验、库存锁定、PDA扫码出库、SAP MB21/MB31过账。
- 生产退料
- 从SAP查询退料数据、PDA扫码入库、SAP MB1B过账、生成退料单据。
章节来源
- InProduceOrderController.java:128-626
- OutProduceController.java:109-800
- InProduceBackController.java:92-442
采购与销售管理:采购退货/销售出库
- 采购退货
- 申请单:PDA扫码验证、按采购组聚合、库存锁定、生成申请单。
- 审核:支持“仅退货”“退换货”两种类型,SAP生成新采购行号并回写。
- 导出:审核通过后导出申请单。
- 销售出库
- 交付单/打印单:支持查询、导出、二维码生成。
- 交付出库:支持PDA扫描、推荐批次、生成出库单据。
章节来源
- PurchaseReturnController.java:83-548
- OutPurchaseController.java:29-366
- DeliverNormalOrderVO.java:72-144
- WmsNormalPrintOrder.java:61-159
质量管理:质检流程与不合格品处理
- 质检任务
- PDA任务查询与物料明细,扫码上架合格品/不合格品。
- 合格品:更新二维码状态为在库,汇总入库数量。
- 不合格品:生成退换货SAP行项目,等待后续处理。
- SAP联动
- 质检上架后,构造ZWM3A18/3A17/3A27等接口参数,完成过账与凭证回写。
章节来源
业务流程图与操作步骤
生产入库(PDA)流程
sequenceDiagram
participant U as "操作员(PDA)"
participant C as "InProduceOrderController"
participant S as "SAP服务"
participant INV as "库存服务"
participant QR as "二维码服务"
U->>C : 获取订单信息
U->>C : 提交收货(扫码/批次)
C->>QR : 校验二维码状态/数量
C->>INV : 入库(按批次/储位)
C->>S : SAP MB1B过账(凭证号/年份)
C-->>U : 返回成功
图表来源
生产领料(PDA)流程
sequenceDiagram
participant U as "操作员(PDA)"
participant C as "OutProduceController"
participant S as "SAP服务"
participant INV as "库存服务"
participant QR as "二维码服务"
U->>C : 获取订单(待领料)
U->>C : 提交领料(扫码/齐套)
C->>QR : 校验二维码状态/数量
C->>INV : 出库(按批次/储位)
C->>S : SAP MB21/MB31过账
C-->>U : 返回成功
图表来源
采购退货(PDA)流程
sequenceDiagram
participant U as "操作员(PDA)"
participant C as "PurchaseReturnController"
participant S as "SAP服务"
participant QR as "二维码服务"
U->>C : 扫码(二维码集合)
C->>QR : 校验二维码状态/来源(采购信息)
C->>C : 聚合申请单(按采购组)
C-->>U : 返回申请单(可选库存锁定)
U->>C : 审核(仅退货/退换货)
C->>S : SAP生成新行号并回写
C-->>U : 导出申请单
图表来源
质检上架(PDA)流程
sequenceDiagram
participant U as "操作员(PDA)"
participant C as "NormalQMController"
participant S as "SAP服务"
participant QR as "二维码服务"
U->>C : 查询质检任务/明细
U->>C : 上架(扫码合格/不合格)
C->>QR : 更新二维码状态(在库/拒收)
C->>C : 组装ZWM3A18/3A17/3A27参数
C->>S : SAP过账并回写凭证
C-->>U : 返回成功
图表来源
依赖分析
- 控制器依赖服务接口与通用VO/DTO/QO,服务层再依赖SAP接口与数据库访问层。
- 关键耦合点
- PDA流程强依赖二维码状态流转(在库/出库/拒收),需保证状态一致性。
- SAP过账依赖凭证号与年份回写,需确保事务一致性。
- 批量操作(扫码/导出/审核)需注意并发与锁机制(如库存锁定)。
graph LR
C1["InventoryController"] --> V1["StorageVO"]
C2["NormalQMController"] --> D1["QCReceiveDTO"]
C3["OutPurchaseController"] --> E1["WmsOutPurchase"]
C3 --> E2["WmsOutPurchaseItem"]
C4["OutProduceController"] --> S1["SAP接口"]
C5["InProduceOrderController"] --> S1
C6["InProduceBackController"] --> S1
图表来源
- StorageVO.java:1-87
- QCReceiveDTO.java:1-41
- WmsOutPurchase.java:1-68
- WmsOutPurchaseItem.java:63-108
- OutProduceController.java:1-831
- InProduceOrderController.java:1-684
- InProduceBackController.java:1-442
章节来源
- OutPurchaseController.java:1-366
- OutProduceController.java:1-831
- InProduceOrderController.java:1-684
- InProduceBackController.java:1-442
性能考虑
- 批量操作
- 扫码入库/出库建议分批处理,避免一次性加载过多二维码与库存记录。
- 导出/报表建议分页或流式输出,减少内存占用。
- 并发与锁
- 生产领料/补料涉及库存锁定,建议使用分布式锁或数据库乐观锁,防止超卖。
- 状态一致性
- 二维码状态(在库/出库/拒收)需与库存变动保持原子性,建议使用事务与状态机。
- SAP交互
- 过账接口调用应设置超时与重试策略,失败时回滚本地状态并提示人工干预。
故障排查指南
- 二维码异常
- 无效码/已入库/未入库:检查二维码状态与来源(采购/生产/在库)。
- 子码缺失:箱码下子码为空时禁止退库。
- 数量不一致
- 生产入库/退料:扫码数量与订单数量不一致时报错,需重新扫描或调整订单。
- 库存不足
- 生产领料/补料:库存不足时返回锁定明细,需释放或补充库存。
- 审核失败
- 采购退货:无权限审核、已审核/已驳回状态冲突,需检查审批状态与权限组。
- 质检异常
- 含不合格品:无码质检任务不允许直接上架合格品,需扫码处理不合格品。
章节来源
- OutProduceController.java:384-705
- PurchaseReturnController.java:403-548
- NormalQMController.java:128-428
结论
本系统围绕仓储、物料、生产、采购与销售、质检五大领域构建了完整的业务闭环,通过PDA与SAP深度集成实现了高效率的实物流转与账务同步。建议在日常运维中重点关注二维码状态一致性、库存锁定与SAP过账的可靠性,并结合本文提供的流程图与最佳实践持续优化用户体验与系统稳定性。
附录
- 关键VO/DTO一览
- 库存位置:StorageVO
- 采购退库:OutPurchaseVO、WmsOutPurchase、WmsOutPurchaseItem
- 生产退料:InProduceBackVO、InProduceInfoVO
- 质检入库:QCReceiveDTO
- 销售出库:DeliverNormalOrderVO、WmsNormalPrintOrder
- 参考路径