diff --git a/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java b/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java index bf10d15b..485f9515 100644 --- a/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java +++ b/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java @@ -344,10 +344,14 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl deleteTreeIds = new ArrayList<>(); if (Objects.nonNull(tree.getId())) { bomTree = getById(tree.getId()); detail = quoteDetailService.getById(bomTree.getQuoteDetailId()); + // 提前在事务外计算待删除节点,缩短事务时间,减少锁持有窗口 + deleteTreeIds = getAllChildIds(detail, bomTree.getId()); + deleteTreeIds.add(bomTree.getId()); detail.setPartNo(tree.getPartNo()); detail.setSite(tree.getSite()); @@ -390,16 +394,15 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl finalDeleteTreeIds = deleteTreeIds; long transactionStartTime = System.currentTimeMillis(); transactionTemplate.execute(status -> { // 1. 执行 BOM 结构切换的 DB 写入 if (Objects.nonNull(tree.getId())) { - List ids = getAllChildIds(finalDetail, finalBomTree.getId()); - ids.add(finalBomTree.getId()); - lambdaUpdate().in(QuoteDetailBomTree::getId, ids).remove(); - quoteDetailBomService.lambdaUpdate().in(QuoteDetailBom::getTreeId, ids).remove(); - quoteDetailRoutingService.lambdaUpdate().in(QuoteDetailRouting::getTreeId, ids).remove(); + lambdaUpdate().in(QuoteDetailBomTree::getId, finalDeleteTreeIds).remove(); + quoteDetailBomService.lambdaUpdate().in(QuoteDetailBom::getTreeId, finalDeleteTreeIds).remove(); + quoteDetailRoutingService.lambdaUpdate().in(QuoteDetailRouting::getTreeId, finalDeleteTreeIds).remove(); long bomId = 0; if (finalNodeData != null) { 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 d88d9565..da6f4ed0 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 @@ -24,16 +24,11 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl