Browse Source

批量插入优化

master
han\hanst 1 month ago
parent
commit
43b19487b5
  1. 32
      src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomServiceImpl.java
  2. 32
      src/main/java/com/spring/modules/quote/service/impl/QuoteDetailRoutingServiceImpl.java

32
src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomServiceImpl.java

@ -214,19 +214,31 @@ public class QuoteDetailBomServiceImpl extends ServiceImpl<QuoteDetailBomMapper,
}
/**
* 复制报价详情BOM信息批量插入优化
* @param tree 新的BOM树节点
* @param id 原BOM树节点ID
* @Author hanst
* @Date 2026-01-15
*/
@Override
public void againQuoteDetailBom(QuoteDetailBomTree tree, long id) {
List<QuoteDetailBom> 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);
}
}
}

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

@ -220,19 +220,31 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl<QuoteDetailRoutin
saveQuoteDetailRouting(quoteDetailRouting);
}
/**
* 复制报价详情工艺信息批量插入优化
* @param tree 新的BOM树节点
* @param id 原BOM树节点ID
* @Author hanst
* @Date 2026-01-15
*/
@Override
public void againQuoteDetailRouting(QuoteDetailBomTree tree, long id) {
List<QuoteDetailRouting> 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);
}
}

Loading…
Cancel
Save