2025.2.10(仓储管理系统)

两者之间的联系
接口与实现的关系:WarehouseStaffService 是一个接口,它定义了仓库员工在仓储管理系统中可能执行的一系列操作的方法签名,但不包含具体的实现逻辑。而 WarehouseStaffServiceImpl 类实现了 WarehouseStaffService 接口,为接口中定义的每个方法提供了具体的实现。这种设计遵循了面向对象编程中的接口与实现分离的原则,使得代码具有更好的可维护性和可扩展性。
依赖注入的应用:在 Spring 框架中,通常会使用依赖注入(DI)的方式将 WarehouseStaffService 接口的实现类注入到需要使用这些服务的地方。通过依赖注入,代码可以依赖于抽象(接口)而不是具体的实现类,这样可以方便地切换不同的实现,提高代码的灵活性。
代码的作用
WarehouseStaffService 接口
该接口定义了仓库员工在仓储管理系统中可以执行的主要操作,包括入库操作、出库操作和统计查询操作。具体方法如下:
inboundOperation(MaterialLedgerDetail ledgerDetail):执行入库操作,接收一个 MaterialLedgerDetail 对象作为参数,返回操作后的 MaterialLedgerDetail 对象。
outboundOperation(MaterialLedgerDetail ledgerDetail):执行出库操作,接收一个 MaterialLedgerDetail 对象作为参数,返回操作后的 MaterialLedgerDetail 对象。
queryInventoryByMaterialCode(String materialCode):根据物料代码查询该物料的库存信息,返回一个包含 MaterialLedgerDetail 对象的列表。
queryInboundDetailsByMaterialCode(String materialCode):根据物料代码查询该物料的入库详细信息,返回一个包含 MaterialLedgerDetail 对象的列表。
queryOutboundDetailsByMaterialCode(String materialCode):根据物料代码查询该物料的出库详细信息,返回一个包含 MaterialLedgerDetail 对象的列表。
WarehouseStaffServiceImpl 实现类
该类为 WarehouseStaffService 接口中的每个方法提供了具体的实现,主要作用是处理仓库员工的业务逻辑,并与数据库进行交互。具体实现如下:
inboundOperation 方法:
为入库记录生成一个唯一的账本编号。
设置操作类型为 “入库”。
调用 MaterialLedgerDetailRepository 的 save 方法将入库记录保存到数据库中,并返回保存后的记录。
outboundOperation 方法:
根据物料代码从数据库中查询该物料的所有记录。
计算该物料的当前库存余额,即入库数量总和减去出库数量总和。
检查出库数量是否大于库存余额,如果大于则抛出异常,否则继续执行。
为出库记录生成一个唯一的账本编号。
设置操作类型为 “出库”。
调用 MaterialLedgerDetailRepository 的 save 方法将出库记录保存到数据库中,并返回保存后的记录。
queryInventoryByMaterialCode 方法:
根据物料代码从数据库中查询该物料的所有记录。
计算该物料的当前库存余额,即入库数量总和减去出库数量总和。
从查询结果中取出第一条记录(如果有),并将其数量设置为计算得到的库存余额。
返回包含该记录的列表。
queryInboundDetailsByMaterialCode 方法:
根据物料代码从数据库中查询该物料的所有记录。
过滤出操作类型为 “入库” 的记录,并将其收集到一个列表中返回。
queryOutboundDetailsByMaterialCode 方法:
根据物料代码从数据库中查询该物料的所有记录。
过滤出操作类型为 “出库” 的记录,并将其收集到一个列表中返回。
综上所述,WarehouseStaffService 接口定义了仓库员工的业务操作规范,而 WarehouseStaffServiceImpl 实现类则具体实现了这些操作,负责处理业务逻辑和与数据库的交互。

posted @ 2025-02-27 22:13  ysd666  阅读(8)  评论(0)    收藏  举报