From 299da4e19c420dfe507bb5248bd9bf4aa5408b3a Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Wed, 28 Jan 2026 14:42:41 +0800 Subject: [PATCH] =?UTF-8?q?2026-01-28=20=E9=94=80=E5=94=AE=E6=8A=A5?= =?UTF-8?q?=E4=BB=B7=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quote/service/QuoteDetailBomTreeService.java | 8 ++++++++ .../impl/QuoteDetailBomTreeServiceImpl.java | 5 +++++ .../impl/QuoteDetailRoutingServiceImpl.java | 13 +++++++++++++ .../service/impl/QuoteDetailServiceImpl.java | 15 +++++++++++---- 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/spring/modules/quote/service/QuoteDetailBomTreeService.java b/src/main/java/com/spring/modules/quote/service/QuoteDetailBomTreeService.java index 76981fcf..c8dfca0a 100644 --- a/src/main/java/com/spring/modules/quote/service/QuoteDetailBomTreeService.java +++ b/src/main/java/com/spring/modules/quote/service/QuoteDetailBomTreeService.java @@ -36,4 +36,12 @@ public interface QuoteDetailBomTreeService extends IService * @return 预估材料成本(estimated_material_cost) */ BigDecimal queryEstimatedMaterialCost(String site, String partNo); + + /** + * 根据物料编码查询物料类型 + * @param site 站点 + * @param partNo 物料编码 + * @return 物料类型(Manufactured/Manufactured Recipe/Purchased/Purchased (raw)) + */ + String queryPartType(String site, String partNo); } 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 96ba7bca..cbca4c3c 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 @@ -553,4 +553,9 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl queryQuoteDetailRouting(QuoteDetailRouting quoteDetailRouting) { QuoteDetail detail = quoteDetailService.getById(quoteDetailRouting.getQuoteDetailId()); + + // 查询当前节点的物料类型,如果是采购件则不显示Routing(脏数据过滤) + if (Objects.nonNull(quoteDetailRouting.getTreeId())) { + QuoteDetailBomTree bomTree = quoteDetailBomTreeService.getById(quoteDetailRouting.getTreeId()); + if (Objects.nonNull(bomTree)) { + String partType = quoteDetailBomTreeService.queryPartType(bomTree.getSite(), bomTree.getPartNo()); + // 只有Manufactured或Manufactured Recipe类型的物料才显示Routing + if (!"Manufactured".equals(partType) && !"Manufactured Recipe".equals(partType)) { + return new java.util.ArrayList<>(); + } + } + } + if (Objects.nonNull(quoteDetailRouting.getIsAllRouting()) && quoteDetailRouting.getIsAllRouting()) { List ids = quoteDetailBomTreeService.getAllChildIds(detail, quoteDetailRouting.getTreeId()); ids.add(quoteDetailRouting.getTreeId()); diff --git a/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailServiceImpl.java b/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailServiceImpl.java index c724fe14..d7e8e0d2 100644 --- a/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailServiceImpl.java +++ b/src/main/java/com/spring/modules/quote/service/impl/QuoteDetailServiceImpl.java @@ -258,15 +258,22 @@ public class QuoteDetailServiceImpl extends ServiceImpl routings = Optional.ofNullable(routingMap.get(bomTree.getId())).orElse(new ArrayList<>()); BigDecimal bomLabourCost = BigDecimal.ZERO; BigDecimal bomMachineCost = BigDecimal.ZERO; - // 获得 BomTree的 人工和制造成本 - for (QuoteDetailRouting routing : routings) { - bomLabourCost = bomLabourCost.add(routing.getTotalLaborCost()); - bomMachineCost = bomMachineCost.add(routing.getTotalMachCost()); + // 获得 BomTree的 人工和制造成本(仅Manufactured或Manufactured Recipe类型的物料) + if (isManufacturedPart) { + for (QuoteDetailRouting routing : routings) { + bomLabourCost = bomLabourCost.add(routing.getTotalLaborCost()); + bomMachineCost = bomMachineCost.add(routing.getTotalMachCost()); + } } // BomTree的物料成本 List boms = Optional.ofNullable(bomMap.get(bomTree.getId())).orElse(new ArrayList<>());