|
|
@ -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"); |
|
|
} |
|
|
} |
|
|
|