Browse Source

2025-11-21

报价优化
master
fengyuan_yang 2 months ago
parent
commit
d893a91c60
  1. 2
      src/main/java/com/spring/modules/quote/entity/QuoteDetailBomTree.java
  2. 18
      src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java

2
src/main/java/com/spring/modules/quote/entity/QuoteDetailBomTree.java

@ -65,6 +65,8 @@ public class QuoteDetailBomTree {
private String umName; private String umName;
@TableField(exist = false) @TableField(exist = false)
private String status; private String status;
@TableField(exist = false)
private Boolean recalculateCost; // 切换版本后是否重新计算成本
/** /**

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

@ -288,12 +288,14 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre
@Override @Override
@Transactional @Transactional
public void changeQuoteDetailBomTree(QuoteDetailBomTree tree) { public void changeQuoteDetailBomTree(QuoteDetailBomTree tree) {
QuoteDetail detail = null;
// 获得选中的树 // 获得选中的树
if (Objects.nonNull(tree.getId())){ if (Objects.nonNull(tree.getId())){
QuoteDetailBomTree bomTree = getById(tree.getId()); QuoteDetailBomTree bomTree = getById(tree.getId());
// 获得对应的QuoteDetail // 获得对应的QuoteDetail
QuoteDetail detail = quoteDetailService.getById(bomTree.getQuoteDetailId());
detail = quoteDetailService.getById(bomTree.getQuoteDetailId());
// 获得节点的所有ids // 获得节点的所有ids
List<Long> ids = getAllChildIds(detail, bomTree.getId()); List<Long> ids = getAllChildIds(detail, bomTree.getId());
@ -316,7 +318,7 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre
.eq(QuoteDetailBom::getBomId,bomTree.getId()) .eq(QuoteDetailBom::getBomId,bomTree.getId())
.update(); .update();
}else { }else {
QuoteDetail detail = new QuoteDetail();
detail = new QuoteDetail();
detail.setQuoteId(tree.getQuoteId()); detail.setQuoteId(tree.getQuoteId());
detail.setQuoteNo(tree.getQuoteNo()); detail.setQuoteNo(tree.getQuoteNo());
detail.setId(tree.getQuoteDetailId()); detail.setId(tree.getQuoteDetailId());
@ -329,6 +331,18 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre
detail.setAlternativeNo(tree.getAlternativeNo()); detail.setAlternativeNo(tree.getAlternativeNo());
initQuoteDetailBomTree(detail, 0L,0); initQuoteDetailBomTree(detail, 0L,0);
} }
// 如果勾选了重新计算成本则执行成本计算
if (Boolean.TRUE.equals(tree.getRecalculateCost()) && detail != null) {
log.info("[BOM_SWITCH] Recalculate cost is enabled, executing cost calculation for QuoteDetailId: {}", detail.getId());
try {
quoteDetailService.queryQuoteDetailCost(detail);
log.info("[BOM_SWITCH] Cost calculation completed successfully for QuoteDetailId: {}", detail.getId());
} catch (Exception e) {
log.error("[BOM_SWITCH] Cost calculation failed for QuoteDetailId: {}, Error: {}", detail.getId(), e.getMessage(), e);
throw new RuntimeException("成本计算失败: " + e.getMessage());
}
}
} }

Loading…
Cancel
Save