|
|
|
@ -72,13 +72,22 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre |
|
|
|
|
|
|
|
// 1、通过PartNo、Site和BuNo 查询BOM信息 失效日期日期为空 替代为* 和Routing (存在BOM的物料) |
|
|
|
if (parentId.equals(0L)){ |
|
|
|
// 顶级物料强制使用 Manufacturing 类型 |
|
|
|
detail.setBomType("Manufacturing"); |
|
|
|
}else { |
|
|
|
// 最上级已经是正式料号,需要判断其他是否是正式料号 |
|
|
|
// 子物料根据物料类型来确定BOM类型 |
|
|
|
PartInformationEntity part = baseMapper.queryPart(detail.getSite(),detail.getPartNo()); |
|
|
|
if (Objects.nonNull(part) && "Y".equals(part.getStatus())){ |
|
|
|
detail.setPartNo(part.getPartNo()); |
|
|
|
} |
|
|
|
// 查询物料类型,根据物料类型设置BOM类型 |
|
|
|
String partType = baseMapper.queryPartType(detail.getSite(), detail.getPartNo()); |
|
|
|
if ("Manufactured".equals(partType) || "Manufactured Recipe".equals(partType)) { |
|
|
|
detail.setBomType("Manufacturing"); |
|
|
|
} else if ("Purchased".equals(partType)) { |
|
|
|
detail.setBomType("Purchase"); |
|
|
|
} |
|
|
|
log.info("子物料 {} 的物料类型为 {},BOM类型设置为 {}", detail.getPartNo(), partType, detail.getBomType()); |
|
|
|
} |
|
|
|
// 获取BOM信息 |
|
|
|
QuoteDetailBomTree bom = baseMapper.queryPartBom(detail); |
|
|
|
@ -104,8 +113,8 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre |
|
|
|
} |
|
|
|
// 查询BOM的子物料 |
|
|
|
List<QuoteDetailBom> componentParts = baseMapper.queryBomComponentPart(bom); |
|
|
|
// 判断BOM Type是否是Purse Purse 需要将自己当成自己的子物料,用于计算成本 |
|
|
|
if ("Purchase".equals(bom.getBomType())) { |
|
|
|
// 判断BOM Type是否是Purchase,且没有子物料时,需要将自己当成自己的子物料,用于计算成本 |
|
|
|
if ("Purchase".equals(bom.getBomType()) && componentParts.isEmpty()) { |
|
|
|
QuoteDetailBom purchase = getPurchaseComponentPart(detail, bom, componentParts.size()+1); |
|
|
|
componentParts.add(purchase); |
|
|
|
} |
|
|
|
|