package com.ruoyi.production.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.pojo.ProductModel; import com.ruoyi.basic.service.IProductModelService; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.production.dto.ProductBomDto; import com.ruoyi.production.mapper.ProductBomMapper; import com.ruoyi.production.mapper.ProductStructureMapper; import com.ruoyi.production.pojo.ProductBom; import com.ruoyi.production.pojo.ProductStructure; import com.ruoyi.production.service.ProductBomService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; /** *

* BOM主表 服务实现类 *

* * @author 芯导软件(江苏)有限公司 * @since 2026-01-15 09:59:27 */ @Service public class ProductBomServiceImpl extends ServiceImpl implements ProductBomService { @Autowired private ProductBomMapper productBomMapper; @Autowired private IProductModelService productModelService; @Autowired private ProductStructureMapper productStructureMapper; @Override public IPage listPage(Page page, ProductBomDto productBomDto) { return productBomMapper.listPage(page, productBomDto); } @Override @Transactional(rollbackFor = Exception.class) public AjaxResult add(ProductBom productBom) { boolean save = productBomMapper.insert(productBom) > 0; if (save) { // 根据id生成no字段:GX + 8位数字(不足8位前面补0) String no = "BM." + String.format("%05d", productBom.getId()); productBom.setBomNo(no); productBomMapper.updateById(productBom); // 查询出产品模型信息 if (productBom.getProductModelId() == null) { throw new ServiceException("请选择产品模型"); } ProductModel productModel = productModelService.getById(productBom.getProductModelId()); if (productModel == null) { throw new ServiceException("选择的产品模型不存在"); } // 添加初始的产品结构 ProductStructure productStructure = new ProductStructure(); productStructure.setProductModelId(productBom.getProductModelId()); productStructure.setUnit(productModel.getUnit()); productStructure.setUnitQuantity(BigDecimal.valueOf(1)); productStructure.setBomId(Long.valueOf(productBom.getId())); productStructureMapper.insert(productStructure); return AjaxResult.success(); } return AjaxResult.error(); } }