diff --git a/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomServiceImpl.java b/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomServiceImpl.java index bb906b7b..03922a8a 100644 --- a/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomServiceImpl.java +++ b/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomServiceImpl.java @@ -214,19 +214,31 @@ public class QuoteDetailBomServiceImpl extends ServiceImpl bomList = lambdaQuery().eq(QuoteDetailBom::getTreeId, id).list(); - for (QuoteDetailBom bom : bomList) { - bom.setTreeId(tree.getId()); - bom.setQuoteDetailId(tree.getQuoteDetailId()); - bom.setQuoteId(tree.getQuoteId()); - bom.setQuoteNo(tree.getQuoteNo()); - bom.setVersionNo(tree.getVersionNo()); - bom.setQuoteDetailItemNo(tree.getQuoteDetailItemNo()); - - bom.setId(null); - save(bom); + + // 优化:批量更新属性后批量插入,减少数据库交互次数,降低死锁风险 + if (!bomList.isEmpty()) { + bomList.forEach(bom -> { + bom.setTreeId(tree.getId()); + bom.setQuoteDetailId(tree.getQuoteDetailId()); + bom.setQuoteId(tree.getQuoteId()); + bom.setQuoteNo(tree.getQuoteNo()); + bom.setVersionNo(tree.getVersionNo()); + bom.setQuoteDetailItemNo(tree.getQuoteDetailItemNo()); + bom.setId(null); + }); + + // 批量保存,默认批量大小为1000,超过1000会自动分批 + saveBatch(bomList); } } } diff --git a/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailRoutingServiceImpl.java b/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailRoutingServiceImpl.java index 70b878f1..a0de1cfd 100644 --- a/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailRoutingServiceImpl.java +++ b/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailRoutingServiceImpl.java @@ -220,19 +220,31 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl list = lambdaQuery().eq(QuoteDetailRouting::getTreeId, id).list(); - for (QuoteDetailRouting detailRouting : list) { - detailRouting.setTreeId(tree.getId()); - detailRouting.setQuoteDetailId(tree.getQuoteDetailId()); - detailRouting.setQuoteId(tree.getQuoteId()); - detailRouting.setQuoteNo(tree.getQuoteNo()); - detailRouting.setVersionNo(tree.getVersionNo()); - detailRouting.setQuoteDetailItemNo(tree.getQuoteDetailItemNo()); - - detailRouting.setId(null); - save(detailRouting); + + // 优化:批量更新属性后批量插入,减少数据库交互次数,降低死锁风险 + if (!list.isEmpty()) { + list.forEach(detailRouting -> { + detailRouting.setTreeId(tree.getId()); + detailRouting.setQuoteDetailId(tree.getQuoteDetailId()); + detailRouting.setQuoteId(tree.getQuoteId()); + detailRouting.setQuoteNo(tree.getQuoteNo()); + detailRouting.setVersionNo(tree.getVersionNo()); + detailRouting.setQuoteDetailItemNo(tree.getQuoteDetailItemNo()); + detailRouting.setId(null); + }); + + // 批量保存,默认批量大小为1000,超过1000会自动分批 + saveBatch(list); } }