diff --git a/src/main/java/com/spring/modules/quotation/mapper/QuoteRoutingHeaderMapper.java b/src/main/java/com/spring/modules/quotation/mapper/QuoteRoutingHeaderMapper.java index 96841ae1..2223a75f 100644 --- a/src/main/java/com/spring/modules/quotation/mapper/QuoteRoutingHeaderMapper.java +++ b/src/main/java/com/spring/modules/quotation/mapper/QuoteRoutingHeaderMapper.java @@ -2,10 +2,7 @@ package com.spring.modules.quotation.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.spring.modules.part.entity.RoutingHeaderEntity; -import com.spring.modules.quotation.entity.QuoteBomDetail; -import com.spring.modules.quotation.entity.QuoteBomHeader; -import com.spring.modules.quotation.entity.QuoteRoutingDetail; -import com.spring.modules.quotation.entity.QuoteRoutingHeader; +import com.spring.modules.quotation.entity.*; import com.spring.modules.quotation.vo.QuoteBomDetailVo; import com.spring.modules.quotation.vo.QuoteRoutingDetailVo; import org.apache.ibatis.annotations.Mapper; @@ -25,4 +22,6 @@ public interface QuoteRoutingHeaderMapper extends BaseMapper List searchQuoteRoutingVersion(QuoteRoutingHeader quoteBomHeader); List searchQuoteRoutingAlternativeNo(QuoteRoutingHeader quoteBomHeader); + + List queryRoutingTool(QuoteRoutingDetail routingDetail); } diff --git a/src/main/java/com/spring/modules/quotation/service/impl/QuotationHeaderServiceImpl.java b/src/main/java/com/spring/modules/quotation/service/impl/QuotationHeaderServiceImpl.java index 79aeb321..03181097 100644 --- a/src/main/java/com/spring/modules/quotation/service/impl/QuotationHeaderServiceImpl.java +++ b/src/main/java/com/spring/modules/quotation/service/impl/QuotationHeaderServiceImpl.java @@ -245,7 +245,11 @@ public class QuotationHeaderServiceImpl extends ServiceImpl list = quoteDetailPropertiesService.getPartSubPropertiesValue(propertiesValueHeader); + List list = new ArrayList<>(); + if (Objects.nonNull(propertiesValueHeader)){ + list = quoteDetailPropertiesService.getPartSubPropertiesValue(propertiesValueHeader); + + } if(!bomHeader.isEmpty()){ quotationDetail.setQuotationDetailId(null); diff --git a/src/main/java/com/spring/modules/quotation/service/impl/QuoteRoutingHeaderServiceImpl.java b/src/main/java/com/spring/modules/quotation/service/impl/QuoteRoutingHeaderServiceImpl.java index 0b9d0695..c7c42472 100644 --- a/src/main/java/com/spring/modules/quotation/service/impl/QuoteRoutingHeaderServiceImpl.java +++ b/src/main/java/com/spring/modules/quotation/service/impl/QuoteRoutingHeaderServiceImpl.java @@ -20,6 +20,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; @@ -142,19 +144,21 @@ public class QuoteRoutingHeaderServiceImpl extends ServiceImpl quoteRoutingDetails = baseMapper.getRoutingComponentEntityList(quoteRoutingHeader); - // todo 删除 routing // 判断是 header 存在parentId 不存在不是最上层 工艺 不需要修改工具信息 否则需要删除工具信息并新增最新版 QuoteRoutingHeader routingHeader = lambdaQuery().eq(QuoteRoutingHeader::getId, quoteRoutingHeader.getId()).one(); - if (Objects.nonNull(routingHeader) && routingHeader.getParentId() == 0){ - // 处理工具 - // 删除工具 并 新增 调用删除工具新增工具方法,该方法需要计算 单位报价成本 预计使用寿命 为 1 其他值复制过来 参数为 - generateQuotationTools(quoteRoutingHeader); - } // 新增 Detail + // 删除工具信息 todo 待优化不明确是否删除哪些工具信息 + quotationToolService.lambdaUpdate() + .eq(QuotationTool::getQuotationDetailId,routingHeader.getQuoteDetailId()) + .remove(); for (QuoteRoutingDetail quoteRoutingDetail : quoteRoutingDetails) { quoteRoutingDetail.setQuoteDetailId(quoteRoutingHeader.getQuoteDetailId()); quoteRoutingDetail.setHeaderId(quoteRoutingHeader.getId()); quoteRoutingDetailService.save(quoteRoutingDetail); + if (Long.valueOf(0).equals(routingHeader.getParentId())){ + // 处理工具 + generateQuotationTools(0L,quoteRoutingDetail); + } } } @@ -243,19 +247,42 @@ public class QuoteRoutingHeaderServiceImpl extends ServiceImpl availableList = baseMapper.getRoutingComponentEntityAvailableList(routingHeader); + // 删除工具信息 todo 待优化不明确是否删除哪些工具信息 + quotationToolService.lambdaUpdate() + .eq(QuotationTool::getQuotationDetailId,routingHeader.getQuoteDetailId()) + .remove(); for (QuoteRoutingDetail routingDetail : availableList) { routingDetail.setQuoteDetailId(routingHeader.getQuoteDetailId()); routingDetail.setHeaderId(routingHeader.getId()); quoteRoutingDetailService.save(routingDetail); + generateQuotationTools(parentId, routingDetail); } saveAllQuoteBomHeader(bomHeaderVo.getList(),routingHeader.getId()); } return routingHeader; } - - private List generateQuotationTools(QuoteRoutingHeader routingHeader) { - - return null; + private void generateQuotationTools(Long parentId, QuoteRoutingDetail routingDetail) { + if (Objects.isNull(parentId) || Long.valueOf(0).equals(parentId)){ + // 如果为零说明是最上层 处理工具信息 + // 1、查询工具信息 + List toolList = baseMapper.queryRoutingTool(routingDetail); + for (QuotationTool tool : toolList) { + if (Objects.isNull(tool.getToolQuantity()) || tool.getToolQuantity().compareTo(BigDecimal.ZERO) == 0){ + tool.setQuotationUnitCost(BigDecimal.ZERO); + }else if (Objects.isNull(tool.getUnitCost()) || tool.getUnitCost().compareTo(BigDecimal.ZERO) == 0){ + tool.setQuotationUnitCost(BigDecimal.ZERO); + }else if (Objects.isNull(tool.getExpectedServiceLife()) || tool.getExpectedServiceLife().compareTo(BigDecimal.ZERO) == 0){ + tool.setExpectedServiceLife(BigDecimal.ONE); + }else { + BigDecimal quoteUnitQuote; + quoteUnitQuote = tool.getUnitCost().multiply(tool.getToolQuantity()); + quoteUnitQuote = quoteUnitQuote.divide(tool.getExpectedServiceLife(),4 , RoundingMode.HALF_UP); + tool.setQuotationUnitCost(quoteUnitQuote); + } + // 2、新增工具信息 + quotationToolService.save(tool); + } + } } } diff --git a/src/main/resources/mapper/quotation/QuoteRoutingHeaderMapper.xml b/src/main/resources/mapper/quotation/QuoteRoutingHeaderMapper.xml index 86ffcb5a..b6ed4322 100644 --- a/src/main/resources/mapper/quotation/QuoteRoutingHeaderMapper.xml +++ b/src/main/resources/mapper/quotation/QuoteRoutingHeaderMapper.xml @@ -217,4 +217,23 @@ and rc.routing_type = 'Manufacturing' and rh.phase_out_date is null + +