Browse Source

2026-05-12

销售报价【切换版本】优化
master
fengyuan_yang 4 weeks ago
parent
commit
c60616c937
  1. 13
      src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java
  2. 7
      src/main/java/com/spring/modules/quote/service/impl/QuoteDetailRoutingServiceImpl.java

13
src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java

@ -344,10 +344,14 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre
BomNodeData nodeData = null;
Long newParentId = 0L;
QuoteDetailBomTree bomTree = null;
List<Long> 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<QuoteDetailBomTre
final BomNodeData finalNodeData = nodeData;
final Long finalNewParentId = newParentId;
final QuoteDetailBomTree finalBomTree = bomTree;
final List<Long> finalDeleteTreeIds = deleteTreeIds;
long transactionStartTime = System.currentTimeMillis();
transactionTemplate.execute(status -> {
// 1. 执行 BOM 结构切换的 DB 写入
if (Objects.nonNull(tree.getId())) {
List<Long> 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) {

7
src/main/java/com/spring/modules/quote/service/impl/QuoteDetailRoutingServiceImpl.java

@ -24,16 +24,11 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl<QuoteDetailRoutin
@Autowired
private QuoteDetailService quoteDetailService;
@Autowired
private QuoteService quoteService;
@Autowired
private QuoteDetailToolService quoteDetailToolService;
@Override
public void saveQuoteDetailRouting(QuoteDetailRouting quoteDetailRouting) {
// 查询日期
Quote quote = quoteService.getById(quoteDetailRouting.getQuoteId());
quoteDetailRouting.setQuoteDate(quote.getQuoteDate());
// quote_date 未参与 insert SQL避免每次保存 Routing 额外查询一次主表
baseMapper.saveQuoteDetailRouting(quoteDetailRouting);
}

Loading…
Cancel
Save