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 4dfa3e54..ecc27fdc 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 @@ -60,6 +60,7 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl componentParts = baseMapper.queryBomComponentPart(bom); - // 判断BOM Type是否是Purse + // 判断BOM Type是否是Purse Purse 需要将自己当成自己的子物料,用于计算成本 if ("Purchase".equals(bom.getBomType())) { - QuoteDetailBom purchase = new QuoteDetailBom(); - purchase.setQuoteDetailId(detail.getId()); - purchase.setQuoteId(detail.getQuoteId()); - purchase.setQuoteDetailItemNo(detail.getItemNo()); - purchase.setSite(detail.getSite()); - purchase.setBuNo(detail.getBuNo()); - purchase.setQuoteNo(detail.getQuoteNo()); - purchase.setVersionNo(detail.getVersionNo()); - purchase.setPartNo(bom.getPartNo()); - purchase.setEngChgLevel(bom.getEngChgLevel()); - purchase.setBomType(bom.getBomType()); - purchase.setAlternativeNo(bom.getAlternativeNo()); - purchase.setComponentPart(bom.getPartNo()); - purchase.setPrintUnit(bom.getUmName()); - purchase.setQtyPerAssembly(BigDecimal.ONE); - purchase.setComponentScrap(BigDecimal.ZERO); - purchase.setIssueType(""); - purchase.setShrinkageFactor(BigDecimal.ZERO); - BigDecimal price = baseMapper.getPartCost(purchase.getSite(),purchase.getPartNo()); - purchase.setUnitPrice(price); - purchase.setActualPrice(price); - purchase.setQuotePrice(price); - purchase.setLineSequence(componentParts.size()+1); - purchase.setBomFlag("N"); - purchase.setStatus(bom.getStatus()); + QuoteDetailBom purchase = getPurchaseComponentPart(detail, bom, componentParts.size()+1); componentParts.add(purchase); } log.info("BOM子物料:{}",componentParts); @@ -128,10 +95,6 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl map = baseSearchBean.getInventoryValueByPartNo(ifsServer.getIfsServer(ifsUsername,ifsPassword), part); - if (Objects.equals(map.get("resultCode"),"200")){ - // 返回成功 将成本 - InventoryPartUnitCostSumVo unitCostSumVo = JSONObject.parseObject(map.get("obj"), InventoryPartUnitCostSumVo.class); - try { - BigDecimal unitCost = new BigDecimal(unitCostSumVo.getInventoryValue()); - component.setUnitPrice(unitCost); - component.setActualPrice(unitCost); - component.setQuotePrice(unitCost); - }catch (Exception e){ - component.setUnitPrice(BigDecimal.ZERO); - component.setActualPrice(BigDecimal.ZERO); - component.setQuotePrice(BigDecimal.ZERO); - log.error("PartNo:{},Site:{},成本信息异常:{}",component.getPartNo(),component.getSite(),e.getMessage()); - } - }else { - // 接口返回异常,处理成本数据为0 - log.error("接口返回400"); - component.setUnitPrice(BigDecimal.ZERO); - component.setActualPrice(BigDecimal.ZERO); - component.setQuotePrice(BigDecimal.ZERO); - String resultMsg = map.get("resultMsg"); - if (resultMsg.contains("You have entered an invalid username and/or password")){ - throw new RuntimeException(resultMsg); - } - } + if ("Y".equals(component.getStatus())) { + getFinalPartCost(component); } //新增子物料信息 component.setTreeId(bom.getId()); @@ -186,6 +118,83 @@ public class QuoteDetailBomTreeServiceImpl extends ServiceImpl map = baseSearchBean.getInventoryValueByPartNo(ifsServer.getIfsServer(ifsUsername,ifsPassword), part); + if (Objects.equals(map.get("resultCode"),"200")){ + // 返回成功 将成本 + InventoryPartUnitCostSumVo unitCostSumVo = JSONObject.parseObject(map.get("obj"), InventoryPartUnitCostSumVo.class); + try { + BigDecimal unitCost = new BigDecimal(unitCostSumVo.getInventoryValue()); + component.setUnitPrice(unitCost); + component.setActualPrice(unitCost); + component.setQuotePrice(unitCost); + }catch (Exception e){ + component.setUnitPrice(BigDecimal.ZERO); + component.setActualPrice(BigDecimal.ZERO); + component.setQuotePrice(BigDecimal.ZERO); + log.error("PartNo:{},Site:{},成本信息异常:{}", component.getPartNo(), component.getSite(),e.getMessage()); + } + }else { + // 接口返回异常,处理成本数据为0 + log.error("接口返回400"); + component.setUnitPrice(BigDecimal.ZERO); + component.setActualPrice(BigDecimal.ZERO); + component.setQuotePrice(BigDecimal.ZERO); + String resultMsg = map.get("resultMsg"); + if (resultMsg.contains("You have entered an invalid username and/or password")){ + throw new RuntimeException(resultMsg); + } + } + } + private QuoteDetailBomTree isComponentBom(QuoteDetail component) { // 根据子物料信息检查是否有BOM信息 return baseMapper.queryPartBom(component); diff --git a/src/main/resources/mapper/quote/QuoteDetailBomTreeMapper.xml b/src/main/resources/mapper/quote/QuoteDetailBomTreeMapper.xml index 2b2a7ca1..d1a0bf0c 100644 --- a/src/main/resources/mapper/quote/QuoteDetailBomTreeMapper.xml +++ b/src/main/resources/mapper/quote/QuoteDetailBomTreeMapper.xml @@ -69,7 +69,7 @@