|
|
|
@ -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) { |
|
|
|
|
|
|
|
// 优化:批量更新属性后批量插入,减少数据库交互次数,降低死锁风险 |
|
|
|
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); |
|
|
|
save(detailRouting); |
|
|
|
}); |
|
|
|
|
|
|
|
// 批量保存,默认批量大小为1000,超过1000会自动分批 |
|
|
|
saveBatch(list); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|