yuan
11 小时以前 28c639dd7b6db86dc3ad68903a1471d74d4a03e9
fix: 更新技术BOM结构以支持规格变化时保留下级BOM
已修改1个文件
18 ■■■■ 文件已修改
src/main/java/com/ruoyi/technology/service/impl/TechnologyBomServiceImpl.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/technology/service/impl/TechnologyBomServiceImpl.java
@@ -116,9 +116,21 @@
        }
        if (oldBom.getProductModelId() != null && !oldBom.getProductModelId().equals(technologyBom.getProductModelId())) {
            technologyRoutingMapper.updateProductModelByBomId(technologyBom.getProductModelId(), technologyBom.getId().longValue());
            technologyBomStructureService.remove(Wrappers.<TechnologyBomStructure>lambdaQuery()
                    .eq(TechnologyBomStructure::getBomId, technologyBom.getId().longValue()));
            initRootStructure(technologyBom.getId().longValue(), technologyBom.getProductModelId());
            // 规格变化时仅更新根节点指向的规格,保留下级BOM结构
            List<TechnologyBomStructure> roots = technologyBomStructureService.list(Wrappers.<TechnologyBomStructure>lambdaQuery()
                    .eq(TechnologyBomStructure::getBomId, technologyBom.getId().longValue())
                    //.isNull(TechnologyBomStructure::getParentId)
            );
            if (roots.isEmpty()) {
                initRootStructure(technologyBom.getId().longValue(), technologyBom.getProductModelId());
            } else {
                ProductModel productModel = productModelService.getById(technologyBom.getProductModelId());
                for (TechnologyBomStructure root : roots) {
                    root.setProductModelId(technologyBom.getProductModelId());
                    root.setUnit(productModel.getUnit());
                    technologyBomStructureService.updateById(root);
                }
            }
        }
        if (technologyBom.getBomNo() == null) {
            technologyBom.setBomNo(oldBom.getBomNo());