From 90edbd3de81a6f045c4a5d83985d4959a2517466 Mon Sep 17 00:00:00 2001 From: jiayang yue Date: Fri, 18 Apr 2025 16:25:03 +0800 Subject: [PATCH] =?UTF-8?q?2025.04.18=20=E8=AF=A2=E4=BB=B7=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=20=E5=AE=A1=E6=89=B9=E4=BF=A1=E6=81=AF=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=96=B9=E6=B3=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/InquiryApplicationServiceImpl.java | 191 +++++++++--------- .../impl/InquiryDetailServiceImpl.java | 76 +++---- 2 files changed, 138 insertions(+), 129 deletions(-) diff --git a/src/main/java/com/xujie/sys/modules/inquiry/service/impl/InquiryApplicationServiceImpl.java b/src/main/java/com/xujie/sys/modules/inquiry/service/impl/InquiryApplicationServiceImpl.java index 9c865803..f07fd2cc 100644 --- a/src/main/java/com/xujie/sys/modules/inquiry/service/impl/InquiryApplicationServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/inquiry/service/impl/InquiryApplicationServiceImpl.java @@ -26,6 +26,7 @@ import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * @author Jia @@ -57,108 +58,110 @@ public class InquiryApplicationServiceImpl extends ServiceImpl= 2) { - data.setSite(buParts[0]); - data.setBuNo(buParts[1]); + String[] parts = data.getBu().split("_", 2); + data.setSite(parts[0]); + if (parts.length > 1) { + data.setBuNo(parts[1]); } } - IPage page = inquiryApplicationMapper.searchInquiryApplicationInfo( - new Page<>(data.getPage(), data.getLimit()), data); - List list = page.getRecords(); - - for (InquiryApplicationData inquiryApplicationData : list) { - InquiryDetailData inquiryDetailData = new InquiryDetailData(); - inquiryDetailData.setRfqId(inquiryApplicationData.getId()); - List inquiryDetailDataList = inquiryDetailMapper.searchInquiryDetailInfo(inquiryDetailData); - - boolean foundBom = false; // 标记是否已找到 BOM 数据 - - if (!inquiryDetailDataList.isEmpty()) { - for (InquiryDetailData detailData : inquiryDetailDataList) { - int hasBom = 0; - // 查询当前 detailData 对应的报价记录 - List quoteList = inquiryDetailMapper.searchQuotationRecordInfo(detailData); - for (Quote quote : quoteList) { - QuoteDetailBom quoteDetailBom = new QuoteDetailBom(); - quoteDetailBom.setQuoteId(quote.getId()); - List bomList = quoteDetailBomMapper.queryQuoteDetailBom2(quoteDetailBom); - if (!bomList.isEmpty()) { - hasBom++; - } - } - // 查询销售报价记录 - Quote quoteData = new Quote(); - quoteData.setInsideInquiryNo(inquiryApplicationData.getRfqNo()); - quoteData.setCreateBy("admin"); - List salesQuotationList = quoteMapper.queryQuoteList(quoteData); - - // 如果当前 detailData 存在 BOM 数据 - if (hasBom > 0) { - foundBom = true; - if ("C".equals(inquiryApplicationData.getStatus())) { - inquiryApplicationData.setBomStatus("BOM制作完成"); - } else { - // 收集销售报价的状态 - List statusQuoteList = new ArrayList<>(); - for (Quote quote : salesQuotationList) { - statusQuoteList.add(quote.getStatus()); - } - if (!statusQuoteList.contains("下达")) { - inquiryApplicationData.setBomStatus("TP计算中"); - } else { - // 判断销售报价状态是否全部为“下达” - boolean allDown = true; - for (String status : statusQuoteList) { - if (!"下达".equals(status)) { - inquiryApplicationData.setBomStatus("报价单部分审批中"); - allDown = false; - break; - } - } - if (allDown) { - inquiryApplicationData.setBomStatus("报价单审批中"); - // 检查每个销售报价的审批状态 - boolean allApproved = true; - for (Quote quote : salesQuotationList) { - InquiryDetailData inquiryDetailData1 = new InquiryDetailData(); - inquiryDetailData1.setApplicationNo(quote.getQuoteVersionNo()); - inquiryDetailData1.setPage(1); - inquiryDetailData1.setLimit(1); - List quoteAuthData = - (List) inquiryDetailServiceImpl - .searchAllInquiryQuoteInfo(inquiryDetailData1).getList(); - if (quoteAuthData.isEmpty() || - !quoteAuthData.get(0).getAllAuthFlag().equals("全部审批")) { - allApproved = false; - break; - } - } - if (allApproved) { - inquiryApplicationData.setBomStatus("报价单审批成功"); - } - } - } - } - // 一旦找到 BOM 数据,退出当前 detailData 循环 - break; - } - } - // 如果遍历完所有 detailData 均未找到 BOM 数据,则状态为 “BOM制作中” - if (!foundBom) { - inquiryApplicationData.setBomStatus("BOM制作中"); - } - } else { - inquiryApplicationData.setBomStatus("BOM制作中"); - } + // 查询分页数据 + IPage page = inquiryApplicationMapper + .searchInquiryApplicationInfo(new Page<>(data.getPage(), data.getLimit()), data); + List records = page.getRecords(); + + // 填充 BOM 状态 + for (InquiryApplicationData app : records) { + populateBomStatus(app); } - page.setRecords(list); + page.setRecords(records); + return new PageUtils(page); } + private void populateBomStatus(InquiryApplicationData app) { + // 查询明细 + InquiryDetailData detailQuery = new InquiryDetailData(); + detailQuery.setRfqId(app.getId()); + List details = inquiryDetailMapper.searchInquiryDetailInfo(detailQuery); + if (details == null || details.isEmpty()) { + app.setBomStatus("BOM制作中"); + return; + } + + boolean foundBom = false; + for (InquiryDetailData detail : details) { + if (hasBom(detail)) { + foundBom = true; + List salesQuotes = getSalesQuotes(app); + app.setBomStatus(determineStatus(app, salesQuotes)); + break; + } + } + + if (!foundBom) { + app.setBomStatus("BOM制作中"); + } + } + + private boolean hasBom(InquiryDetailData detail) { + List quoteList = inquiryDetailMapper.searchQuotationRecordInfo(detail); + if (quoteList == null) return false; + for (Quote quote : quoteList) { + QuoteDetailBom qdb = new QuoteDetailBom(); + qdb.setQuoteId(quote.getId()); + List bomList = quoteDetailBomMapper.queryQuoteDetailBom2(qdb); + if (bomList != null && !bomList.isEmpty()) { + return true; + } + } + return false; + } + + private List getSalesQuotes(InquiryApplicationData app) { + Quote query = new Quote(); + query.setInsideInquiryNo(app.getRfqNo()); + query.setCreateBy("admin"); + return quoteMapper.queryQuoteList(query); + } + + private String determineStatus(InquiryApplicationData app, List salesQuotes) { + if ("C".equals(app.getStatus())) { + return "BOM制作完成"; + } + + List statuses = salesQuotes.stream() + .map(Quote::getStatus) + .collect(Collectors.toList()); + + if (!statuses.contains("下达")) { + return "TP计算中"; + } + + boolean allDown = statuses.stream().allMatch("下达"::equals); + if (!allDown) { + return "报价单部分审批中"; + } + + boolean allApproved = true; + for (Quote quote : salesQuotes) { + InquiryDetailData req = new InquiryDetailData(); + req.setApplicationNo(quote.getQuoteVersionNo()); + req.setPage(1); + req.setLimit(1); + List rawList = inquiryDetailServiceImpl.searchAllInquiryQuoteInfo(req).getList(); + @SuppressWarnings("unchecked") + List authList = (List) rawList; + if (authList.isEmpty() || !"全部审批".equals(authList.get(0).getAllAuthFlag())) { + allApproved = false; + break; + } + } + + return allApproved ? "报价单审批成功" : "报价单审批中"; + } @Override @Transactional diff --git a/src/main/java/com/xujie/sys/modules/inquiry/service/impl/InquiryDetailServiceImpl.java b/src/main/java/com/xujie/sys/modules/inquiry/service/impl/InquiryDetailServiceImpl.java index ea3f23c0..210d5eb4 100644 --- a/src/main/java/com/xujie/sys/modules/inquiry/service/impl/InquiryDetailServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/inquiry/service/impl/InquiryDetailServiceImpl.java @@ -23,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * @author Jia @@ -131,43 +132,48 @@ public class InquiryDetailServiceImpl extends ServiceImpl page = inquiryDetailMapper.searchAllInquiryQuoteInfo(new Page<>(data.getPage(), data.getLimit()), data); - - // 获取所有询价单下的所有审批状态 - AuthHistData authHistData = new AuthHistData(); - for (InquiryDetailData record : page.getRecords()) { - authHistData.setOrderRef1(record.getApplicationNo()); - authHistData.setSite(record.getSite()); - authHistData.setOrderRef2(record.getBuNo()); - List list = authHistMapper.searchAuthInfo(authHistData); - List approveResults = new ArrayList<>(); - List histDataFlags = new ArrayList<>(); - for (AuthHistData histData : list) { - approveResults.add(histData.getApproveResult()); - histDataFlags.add(histData.getAuthFlag()); - } - if (record.getIsSimultaneous()){ - if (approveResults.contains("未通过")){ - record.setAllAuthFlag("审批未通过"); - continue; - } - } - if (histDataFlags.contains("Y")) { - // 如果包含已审批,则判断是否包含未审批 - if(histDataFlags.contains("N")) { - // 如果包含未审批,则为部分审批 - record.setAllAuthFlag("部分审批"); - } else { - // 如果不包含未审批,则为全部审批 - record.setAllAuthFlag("全部审批"); - } - } else { - // 如果不包含已审批,则为未审批 - record.setAllAuthFlag("未审批"); - } - } + // 分页查询所有报价审批明细 + IPage page = inquiryDetailMapper.searchAllInquiryQuoteInfo( + new Page<>(data.getPage(), data.getLimit()), data); + List records = page.getRecords(); + + // 填充审批状态标识 + records.forEach(this::populateAuthFlag); + page.setRecords(records); + return new PageUtils(page); } + + private void populateAuthFlag(InquiryDetailData record) { + // 构建查询 + AuthHistData query = new AuthHistData(); + query.setOrderRef1(record.getApplicationNo()); + query.setSite(record.getSite()); + query.setOrderRef2(record.getBuNo()); + List histList = authHistMapper.searchAuthInfo(query); + + // 收集审批结果和标识 + List results = histList.stream() + .map(AuthHistData::getApproveResult) + .collect(Collectors.toList()); + List flags = histList.stream() + .map(AuthHistData::getAuthFlag) + .collect(Collectors.toList()); + + // 并行审批失败优先 + if (record.getIsSimultaneous() && results.contains("未通过")) { + record.setAllAuthFlag("审批未通过"); + return; + } + // 已审批标识处理 + if (flags.contains("Y")) { + record.setAllAuthFlag( + flags.contains("N") ? "部分审批" : "全部审批" + ); + } else { + record.setAllAuthFlag("未审批"); + } + } }