Browse Source

2025-12-20

报价时的estimatedMaterialCost从接口获取
master
fengyuan_yang 4 months ago
parent
commit
6067fcae2b
  1. 8
      src/main/java/com/spring/modules/quote/mapper/QuoteDetailBomTreeMapper.java
  2. 3
      src/main/java/com/spring/modules/quote/service/QuoteDetailBomTreeService.java
  3. 16
      src/main/java/com/spring/modules/quote/service/impl/QuoteDetailBomTreeServiceImpl.java
  4. 2
      src/main/java/com/spring/modules/quote/service/impl/QuoteDetailServiceImpl.java
  5. 8
      src/main/resources/mapper/quote/QuoteDetailBomTreeMapper.xml

8
src/main/java/com/spring/modules/quote/mapper/QuoteDetailBomTreeMapper.java

@ -47,4 +47,12 @@ public interface QuoteDetailBomTreeMapper extends BaseMapper<QuoteDetailBomTree>
* @return 预估材料成本estimated_material_cost
*/
BigDecimal queryEstimatedMaterialCost(@Param("site") String site, @Param("partNo") String partNo);
/**
* 根据物料编码查询物料状态
* @param site 站点
* @param partNo 物料编码
* @return 物料状态Y=正式物料, N=非正式物料
*/
String queryPartStatus(@Param("site") String site, @Param("partNo") String partNo);
}

3
src/main/java/com/spring/modules/quote/service/QuoteDetailBomTreeService.java

@ -33,8 +33,7 @@ public interface QuoteDetailBomTreeService extends IService<QuoteDetailBomTree>
* 根据物料编码查询预估材料成本
* @param site 站点
* @param partNo 物料编码
* @param status 物料状态 (Y=正式物料调用IFS接口, N=非正式物料查询数据库)
* @return 预估材料成本estimated_material_cost
*/
BigDecimal queryEstimatedMaterialCost(String site, String partNo, String status);
BigDecimal queryEstimatedMaterialCost(String site, String partNo);
}

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

@ -497,14 +497,18 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre
}
@Override
public BigDecimal queryEstimatedMaterialCost(String site, String partNo, String status) {
log.info("queryEstimatedMaterialCost - Request params: site={}, partNo={}, status={}", site, partNo, status);
public BigDecimal queryEstimatedMaterialCost(String site, String partNo) {
log.info("queryEstimatedMaterialCost - Request params: site={}, partNo={}", site, partNo);
// 非正式物料(status='N')直接从数据库查询
// 从part表查询物料状态
String status = baseMapper.queryPartStatus(site, partNo);
log.info("queryEstimatedMaterialCost - Query part status from database: status={}", status);
// 非正式物料(status='N'或为空)直接从数据库查询
if (!"Y".equals(status)) {
BigDecimal cost = baseMapper.queryEstimatedMaterialCost(site, partNo);
BigDecimal result = cost != null ? cost : BigDecimal.ZERO;
log.info("queryEstimatedMaterialCost - Unofficial part, query from database. Result: {}", result);
log.info("queryEstimatedMaterialCost - Unofficial part (status={}), query from database. Result: {}", status, result);
return result;
}
@ -534,7 +538,9 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl<QuoteDetailBomTre
if (Objects.equals(map.get("resultCode"), "200")) {
InventoryPartUnitCostSumVo unitCostSumVo = JSONObject.parseObject(map.get("obj"), InventoryPartUnitCostSumVo.class);
BigDecimal estimatedCost = new BigDecimal(unitCostSumVo.getInventoryValue());
String estimatedMaterialCostStr = unitCostSumVo.getEstimatedMaterialCost();
BigDecimal estimatedCost = org.apache.commons.lang3.StringUtils.isNotBlank(estimatedMaterialCostStr)
? new BigDecimal(estimatedMaterialCostStr) : BigDecimal.ZERO;
log.info("queryEstimatedMaterialCost - Successfully retrieved estimated material cost from IFS: {}", estimatedCost);
return estimatedCost;
} else {

2
src/main/java/com/spring/modules/quote/service/impl/QuoteDetailServiceImpl.java

@ -271,7 +271,7 @@ public class QuoteDetailServiceImpl extends ServiceImpl<QuoteDetailMapper, Quote
// 如果半成品的BOM类型是Purchase则加上该物料的预估材料成本(estimated_material_cost)
if ("Purchase".equals(bomTree.getBomType())) {
BigDecimal estimatedMaterialCost = quoteDetailBomTreeService.queryEstimatedMaterialCost(
bomTree.getSite(), bomTree.getPartNo(), bomTree.getStatus());
bomTree.getSite(), bomTree.getPartNo());
bomQuotePrice = bomQuotePrice.add(estimatedMaterialCost);
log.info("Semi-finished product {} is Purchase type, add estimated material cost {}, accumulated cost is {}",
bomTree.getPartNo(), estimatedMaterialCost, bomQuotePrice);

8
src/main/resources/mapper/quote/QuoteDetailBomTreeMapper.xml

@ -207,6 +207,14 @@
where site = #{site}
and part_no = #{partNo}
</select>
<!-- 根据物料编码查询物料状态 -->
<select id="queryPartStatus" resultType="java.lang.String">
select status
from part
where site = #{site}
and part_no = #{partNo}
</select>
<select id="queryPLMPart" resultType="com.spring.modules.part.entity.PartInformationEntity">
select top 1 site,

Loading…
Cancel
Save