From 9d9a7819fe19389bc4e29c57e5c49407df0d33d7 Mon Sep 17 00:00:00 2001 From: qiezi <15576055375@163.com> Date: Tue, 8 Oct 2024 14:45:51 +0800 Subject: [PATCH] 2024-10-08 --- .../impl/QuotationHeaderServiceImpl.java | 170 ++++++++++-------- .../quotation/QuotationDetailMapper.xml | 8 +- .../quotation/QuoteDetailPropertiesMapper.xml | 2 +- 3 files changed, 103 insertions(+), 77 deletions(-) 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 f20abb43..10c9fc24 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 @@ -12,10 +12,7 @@ import com.spring.modules.base.entity.PartSubPropertiesValueHeader; import com.spring.modules.quotation.entity.*; import com.spring.modules.quotation.mapper.QuotationHeaderMapper; import com.spring.modules.quotation.service.*; -import com.spring.modules.quotation.vo.QuotationHeaderVo; -import com.spring.modules.quotation.vo.QuotationInformationVo; -import com.spring.modules.quotation.vo.QuoteBomDetailVo; -import com.spring.modules.quotation.vo.QuoteDetailPropertiesVo; +import com.spring.modules.quotation.vo.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -231,81 +228,110 @@ public class QuotationHeaderServiceImpl extends ServiceImpl quotationDetailList,QuotationHeader quotationHeader) { - if (null != quotationDetailList && !quotationDetailList.isEmpty()){ - quotationDetailList.forEach(quotationDetail -> { - // 查询报价明细中的信息(材料,工序,工具,成品属性) - // 1、bom - List bomHeader = getQuoteBomHeader(quotationDetail); - - - // 查询 属性信息 - QuoteDetailPropertiesVo propertiesVo = new QuoteDetailPropertiesVo(); - propertiesVo.setQuotationDetailId(quotationDetail.getQuotationDetailId().longValue()); - propertiesVo.setSite(quotationDetail.getSite()); - PartSubPropertiesValueHeader propertiesValueHeader = quoteDetailPropertiesService.getPartSubPropertiesValueHeader(propertiesVo); - - // 查询属性详细详细信息 - List list = new ArrayList<>(); - if (Objects.nonNull(propertiesValueHeader)){ - list = quoteDetailPropertiesService.getPartSubPropertiesValue(propertiesValueHeader); - + if (Objects.isNull(quotationDetailList) || quotationDetailList.isEmpty() || quotationHeader == null){ + return; + } + for (QuotationDetail detail : quotationDetailList) { + // 查询 BomHeader + List bomHeaderList = getQuoteBomHeader(detail); + // 查询 RoutingHeader + List routingHeaderList = queryRoutingHeader(detail); + // 查询工具 + List toolList = quotationToolService.lambdaQuery().eq(QuotationTool::getQuotationDetailId, detail.getQuotationDetailId()).list(); + // 查询 属性 + QuoteDetailPropertiesVo propertiesVo = new QuoteDetailPropertiesVo(); + propertiesVo.setQuotationDetailId(detail.getQuotationDetailId().longValue()); + propertiesVo.setSite(detail.getSite()); + PartSubPropertiesValueHeader propertiesValueHeader = quoteDetailPropertiesService.getPartSubPropertiesValueHeader(propertiesVo); + // 查询属性详细详细信息 + List propertiesValueList = new ArrayList<>(); + if (Objects.nonNull(propertiesValueHeader)){ + propertiesValueList = quoteDetailPropertiesService.getPartSubPropertiesValue(propertiesValueHeader); + } + // 新增Detail + detail.setQuotationHeaderId(quotationHeader.getQuotationHeaderId()); + detail.setQuotationDetailStatus("草稿"); + detail.setQuotationDetailId(null); + quotationDetailService.save(detail); + // 新增工具 + for (QuotationTool quotationTool : toolList) { + quotationTool.setQuotationToolId(null); + quotationTool.setQuotationDetailId(detail.getQuotationDetailId()); + quotationToolService.save(quotationTool); + } + // 新增属性 + if (Objects.nonNull(propertiesValueHeader)){ + propertiesValueHeader.setPartNo("BJ"+detail.getQuotationDetailId()); + quoteDetailPropertiesService.savePartSubPropertiesValueHeader(propertiesValueHeader); + } + // 新增属性明细 + if (!propertiesValueList.isEmpty()){ + for (PartSubPropertiesValue value : propertiesValueList) { + value.setPartNo("BJ"+detail.getQuotationDetailId()); } + quoteDetailPropertiesService.savePartSubPropertiesValue(propertiesValueList); + } + // 新增BOM + for (QuoteBomHeader bomHeader : bomHeaderList) { + bomHeader.setQuoteDetailId(detail.getQuotationDetailId().longValue()); + } + againQuoteDetailBom(bomHeaderList,0L,0L); + // 新增Routing + for (QuoteRoutingHeader routingHeader : routingHeaderList) { + // 查询routing明细 + routingHeader.setQuoteDetailId(detail.getQuotationDetailId().longValue()); + } + againQuoteDetailRouting(routingHeaderList,0L,0L); + } + } - if(!bomHeader.isEmpty()){ - quotationDetail.setQuotationDetailId(null); - quotationDetail.setQuotationDetailStatus("草稿"); - quotationDetail.setQuotationHeaderId(quotationHeader.getQuotationHeaderId()); - quotationDetailService.save(quotationDetail); - - // 新增属性PartSubPropertiesValueHeader - propertiesValueHeader.setPartNo("BJ"+quotationDetail.getQuotationDetailId()); - quoteDetailPropertiesService.savePartSubPropertiesValueHeader(propertiesValueHeader); - quoteDetailPropertiesService.savePartSubPropertiesValue(list.stream().map(item -> { - item.setPartNo("BJ"+quotationDetail.getQuotationDetailId()); - return item; - }).collect(Collectors.toList())); - return; + private void againQuoteDetailBom(List quoteBomHeaderList, Long parentId, Long newParentId){ + for (QuoteBomHeader header : quoteBomHeaderList) { + if (header.getParentId().equals(parentId)){ + // 查询bom明细 + List bomDetailList = quoteBomDetailService.lambdaQuery() + .eq(QuoteBomDetail::getHeaderId, header.getId()).list(); + Long oldId = header.getId(); + header.setParentId(newParentId); + // 插入数据 + quoteBomHeaderService.save(header); + againQuoteDetailBom(quoteBomHeaderList,oldId,header.getId()); + // 插入bom明细 + for (QuoteBomDetail bomDetail : bomDetailList) { + bomDetail.setId(null); + bomDetail.setHeaderId(header.getId()); + bomDetail.setQuoteDetailId(header.getQuoteDetailId()); + quoteBomDetailService.save(bomDetail); } - // 新增bom - for (QuoteBomHeader header : bomHeader) { - header.setQuoteDetailId(quotationDetail.getQuotationDetailId().longValue()); - List bomDetailVoList = quoteBomDetailService.searchQuoteBomDetailList(header); - quoteBomHeaderService.save(header); - // 将报价明细中的(材料,工序,工具,成品属性)新增到报价单明细中 - if (!bomDetailVoList.isEmpty()){ - List quoteBomDetailList = getQuoteBomDetailList(quotationDetail,bomDetailVoList); - quoteBomDetailService.saveBatchQuoteDetailBom(quoteBomDetailList); - } - } - // 2、工具 - List toolList = quotationToolService.lambdaQuery().eq(QuotationTool::getQuotationDetailId, quotationDetail.getQuotationDetailId()).list(); - // 循环新增报价单明细 - quotationDetail.setQuotationDetailId(null); - quotationDetail.setQuotationHeaderId(quotationHeader.getQuotationHeaderId()); - quotationDetailService.save(quotationDetail); + } + } + } - // 新增工具 - if (!toolList.isEmpty()){ - toolList = getQuotationTool(quotationDetail,toolList); - quotationToolService.batchInsertQuotationTool(toolList,quotationDetail.getQuotationDetailId()); + private void againQuoteDetailRouting(List quoteRoutingHeaderList, Long parentId,Long newParentId){ + for (QuoteRoutingHeader header : quoteRoutingHeaderList) { + if (header.getParentId().equals(parentId)){ + // 查询bom明细 + List routingDetailList = quoteRoutingDetailService.lambdaQuery() + .eq(QuoteRoutingDetail::getHeaderId, header.getId()).list(); + // 插入数据 + Long oldId = header.getId(); + header.setParentId(newParentId); + quoteRoutingHeaderService.save(header); + againQuoteDetailRouting(quoteRoutingHeaderList,oldId,header.getId()); + // 插入bom明细 + for (QuoteRoutingDetail routingDetail : routingDetailList) { + routingDetail.setId(null); + routingDetail.setHeaderId(header.getId()); + routingDetail.setQuoteDetailId(header.getQuoteDetailId()); + quoteRoutingDetailService.save(routingDetail); } - - // 3、复制属性 - - }); + } } } - public List getQuotationTool(QuotationDetail quotationDetail,List toolList){ - return toolList.stream().peek(quotationTool -> { - quotationTool.setQuotationToolId(null); - quotationTool.setQuotationDetailId(quotationDetail.getQuotationDetailId()); - }).collect(Collectors.toList()); - } - public List getQuoteBomDetailList(QuotationDetail quotationDetail,List bomDetailVoList){ - return bomDetailVoList.stream().map(quoteBomDetailVo -> { - quoteBomDetailVo.setQuoteDetailId(quotationDetail.getQuotationDetailId().longValue()); - return (QuoteBomDetail) quoteBomDetailVo; - }).collect(Collectors.toList()); + public List queryRoutingHeader(QuotationDetail quotationDetail){ + return quoteRoutingHeaderService.lambdaQuery() + .eq(QuoteRoutingHeader::getQuoteDetailId, quotationDetail.getQuotationDetailId()) + .eq(QuoteRoutingHeader::getSite, quotationDetail.getSite()).list(); } public List getQuoteBomHeader(QuotationDetail quotationDetail){ return quoteBomHeaderService.lambdaQuery() diff --git a/src/main/resources/mapper/quotation/QuotationDetailMapper.xml b/src/main/resources/mapper/quotation/QuotationDetailMapper.xml index 14f8028f..0bd93504 100644 --- a/src/main/resources/mapper/quotation/QuotationDetailMapper.xml +++ b/src/main/resources/mapper/quotation/QuotationDetailMapper.xml @@ -250,8 +250,8 @@ code_desc, function_type FROM plm_properties_model_header - WHERE function_type = 'BJ' - AND code_no = 'BJ001' + WHERE function_type = 'IP' + AND code_no = 'I002' AND site = #{site} @@ -261,8 +261,8 @@ select concat('BJ',#{quotationDetailId}),ppmd.site,ppmd.code_no,1,ppmh.code_desc,seq_no,properties_item_no,'','',ppmd.function_type from plm_properties_model_detail ppmd left join plm_properties_model_header ppmh on ppmh.function_type = ppmd.function_type and ppmh.code_no = ppmd.code_no and ppmh.site = ppmd.site - WHERE ppmd.function_type = 'BJ' - AND ppmd.code_no = 'BJ001' + WHERE ppmd.function_type = 'IP' + AND ppmd.code_no = 'I002' AND ppmd.site = #{site} diff --git a/src/main/resources/mapper/quotation/QuoteDetailPropertiesMapper.xml b/src/main/resources/mapper/quotation/QuoteDetailPropertiesMapper.xml index fbef5926..2756fb44 100644 --- a/src/main/resources/mapper/quotation/QuoteDetailPropertiesMapper.xml +++ b/src/main/resources/mapper/quotation/QuoteDetailPropertiesMapper.xml @@ -168,7 +168,7 @@ resultType="com.spring.modules.base.entity.PartSubPropertiesValueHeader"> select top 1 PartNo, Site, CodeNo, SubCodeSeqNo, SubCodeDesc, RecordType from PartSubPropertiesValueHeader - where CodeNo = 'I001' + where CodeNo = 'I002' and SubCodeSeqNo = 1 and RecordType = 'IP' and PartNo = concat('BJ', #{quotationDetailId})