package cn.iocoder.yudao.module.erp.service.stock; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.record.ErpStockRecordPageReqVO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockRecordDO; import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockRecordMapper; import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.math.BigDecimal; /** * ERP 产品库存明细 Service 实现类 * * @author 芋道源码 */ @Service @Validated public class ErpStockRecordServiceImpl implements ErpStockRecordService { @Resource private ErpStockRecordMapper stockRecordMapper; @Resource private ErpStockService stockService; @Override public ErpStockRecordDO getStockRecord(Long id) { return stockRecordMapper.selectById(id); } @Override public PageResult getStockRecordPage(ErpStockRecordPageReqVO pageReqVO) { return stockRecordMapper.selectPage(pageReqVO); } @Override @Transactional(rollbackFor = Exception.class) public void createStockRecord(ErpStockRecordCreateReqBO createReqBO) { // 1. 更新库存 BigDecimal totalCount = stockService.updateStockCountIncrement( createReqBO.getProductId(), createReqBO.getWarehouseId(), createReqBO.getCount()); // 2. 创建库存明细 ErpStockRecordDO stockRecord = BeanUtils.toBean(createReqBO, ErpStockRecordDO.class) .setTotalCount(totalCount); stockRecordMapper.insert(stockRecord); } }