diff --git a/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java b/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java index 485f9515..59d436ab 100644 --- a/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java +++ b/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java @@ -130,14 +130,16 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl ifsConFactory, Map costCache) { + // 统一先尝试将临时料映射到正式料,保证新建与“切换版本刷新”取数来源一致 + PartInformationEntity mappedPart = baseMapper.queryPart(detail.getSite(), detail.getPartNo()); + if (Objects.nonNull(mappedPart) && "Y".equals(mappedPart.getStatus())) { + detail.setPartNo(mappedPart.getPartNo()); + } + // 确定 BOM 类型 if (parentId.equals(0L)) { detail.setBomType("Manufacturing"); } else { - PartInformationEntity part = baseMapper.queryPart(detail.getSite(), detail.getPartNo()); - if (Objects.nonNull(part) && "Y".equals(part.getStatus())) { - detail.setPartNo(part.getPartNo()); - } if (detail.getBomType() == null || detail.getBomType().isEmpty()) { String partType = baseMapper.queryPartType(detail.getSite(), detail.getPartNo()); if ("Manufactured".equals(partType) || "Manufactured Recipe".equals(partType)) { diff --git a/src/main/java/com/spring/modules/quote/service/impl/QuoteServiceImpl.java b/src/main/java/com/spring/modules/quote/service/impl/QuoteServiceImpl.java index b32dfbbb..09d23b69 100644 --- a/src/main/java/com/spring/modules/quote/service/impl/QuoteServiceImpl.java +++ b/src/main/java/com/spring/modules/quote/service/impl/QuoteServiceImpl.java @@ -310,7 +310,9 @@ public class QuoteServiceImpl extends ServiceImpl implements detail.setVersionNo(quote.getVersionNo()); // detail.setPartId(); detail.setQuoteCount(1); - detail.setPartNo(quotation.getTestPartNo()); + // 待报价清单新建时优先使用正式料号,保证与“切换版本”默认映射来源一致 + String initPartNo = StringUtils.hasText(quotation.getFinalPartNo()) ? quotation.getFinalPartNo() : quotation.getTestPartNo(); + detail.setPartNo(initPartNo); detail.setPartDesc(quotation.getPartName()); detail.setInternalInquiryNo(quote.getInsideInquiryNo()); diff --git a/src/main/resources/mapper/quote/QuoteDetailBomTreeMapper.xml b/src/main/resources/mapper/quote/QuoteDetailBomTreeMapper.xml index 6aa7b5e9..d959e472 100644 --- a/src/main/resources/mapper/quote/QuoteDetailBomTreeMapper.xml +++ b/src/main/resources/mapper/quote/QuoteDetailBomTreeMapper.xml @@ -191,6 +191,7 @@ where p.site = #{site} and p.plm_part_no = #{partNo} and temporary_part_flag != 'Y' + order by case when p.status = 'Y' then 0 else 1 end, p.part_no diff --git a/src/main/resources/mapper/quote/QuoteGroupDetailMapper.xml b/src/main/resources/mapper/quote/QuoteGroupDetailMapper.xml index 98b65a03..4be0dd49 100644 --- a/src/main/resources/mapper/quote/QuoteGroupDetailMapper.xml +++ b/src/main/resources/mapper/quote/QuoteGroupDetailMapper.xml @@ -350,6 +350,8 @@ from part p where p.site = #{site} and p.plm_part_no = #{partNo} + and p.temporary_part_flag != 'Y' + order by case when p.status = 'Y' then 0 else 1 end, p.part_no