Browse Source

2026-03-17

销售报价的“人工成本”计算过大优化
master
fengyuan_yang 4 weeks ago
parent
commit
4a53b0d4aa
  1. 16
      src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java

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

@ -189,12 +189,18 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre
BomNodeData childNode = collectBomData(childDetail, -1L, level + 1, ifsConFactory); BomNodeData childNode = collectBomData(childDetail, -1L, level + 1, ifsConFactory);
if (childNode != null) { if (childNode != null) {
nodeData.children.add(childNode); nodeData.children.add(childNode);
// 半成品bomId 在写入阶段填充先清零价格IFS 并行阶段会覆盖
component.setBomFlag("Y");
component.setUnitPrice(BigDecimal.ZERO);
component.setActualPrice(BigDecimal.ZERO);
component.setQuotePrice(BigDecimal.ZERO);
} else {
// collectBomData 返回 null 说明该子物料在 PLM 中无可用 BOM 数据
// 必须降级为 "N"否则该组件会占用 childIndex 槽位
// 导致后续真实半成品的 bomId 错位bomId=null进而使人工成本计算错误
log.warn("[BOM_PROCESS] 半成品 {} 的 BOM 数据收集失败(collectBomData 返回 null),降级为普通采购件处理", component.getComponentPart());
component.setBomFlag("N");
} }
// 半成品bomId 在写入阶段填充先清零价格IFS 并行阶段会覆盖
component.setBomFlag("Y");
component.setUnitPrice(BigDecimal.ZERO);
component.setActualPrice(BigDecimal.ZERO);
component.setQuotePrice(BigDecimal.ZERO);
} else { } else {
component.setBomFlag("N"); component.setBomFlag("N");
} }

Loading…
Cancel
Save