Browse Source

2026-05-18

新建报价单的时候有些料的成本会带不出来,切换版本后又出来了
master
fengyuan_yang 4 weeks ago
parent
commit
ce118588bc
  1. 10
      src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java
  2. 4
      src/main/java/com/spring/modules/quote/service/impl/QuoteServiceImpl.java
  3. 1
      src/main/resources/mapper/quote/QuoteDetailBomTreeMapper.xml
  4. 2
      src/main/resources/mapper/quote/QuoteGroupDetailMapper.xml

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

@ -130,14 +130,16 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre
* @param ifsConFactory IFS 连接工厂每个并发线程调用 get() 获取独立连接避免共享连接线程安全问题
*/
private BomNodeData collectBomData(QuoteDetail detail, Long parentId, Integer level, Supplier<Server> ifsConFactory, Map<String, BigDecimal> 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)) {

4
src/main/java/com/spring/modules/quote/service/impl/QuoteServiceImpl.java

@ -310,7 +310,9 @@ public class QuoteServiceImpl extends ServiceImpl<QuoteMapper, Quote> 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());

1
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
</select>
<!-- 根据物料编码查询物料类型 -->

2
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
</select>
<select id="queryQuoteGroupDetailByInquiry1" resultType="com.spring.modules.quote.entity.QuoteGroupDetail"

Loading…
Cancel
Save