From 50889ff571df7581cb784f02a2ab739078276089 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Mon, 24 Jun 2024 11:12:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20E=E9=87=87=E9=80=9A=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=A0=87=E5=87=86=E4=BF=A1=E6=81=AF=E4=BB=8E=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E9=9B=B6=E9=83=A8=E4=BB=B6=E4=B8=AD=E8=8E=B7=E5=8F=96=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../srms/controller/SrmsApiController.java | 2 +- .../srms/service/impl/SrmsApiServiceImpl.java | 69 ++++++++++++++----- 2 files changed, 52 insertions(+), 19 deletions(-) diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/controller/SrmsApiController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/controller/SrmsApiController.java index ad331527..fa98a5e4 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/controller/SrmsApiController.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/controller/SrmsApiController.java @@ -190,7 +190,7 @@ public class SrmsApiController { log.error("E采通获取标准信息异常:", e); return ResponsesUtil.getJsonResult( srmsApiService.getMessageHandler("interface_id", uuid, "SCM"), - ResponsesUtil.getJsonErrUpper("操作失败", CommonConstant.SC_INTERNAL_SERVER_ERROR_500)); + ResponsesUtil.getJsonErrUpper(e.getMessage(), CommonConstant.SC_INTERNAL_SERVER_ERROR_500)); } } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java index 28458125..64b3abe9 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java @@ -20,6 +20,8 @@ import com.jero.common.util.MD5Util; import com.jero.common.util.RedisUtil; import com.jero.common.util.TokenUtils; import com.jero.modules.bindPart.entity.BindPartStandardVO; +import com.jero.modules.bindPart.entity.LawsBindPartDoc; +import com.jero.modules.bindPart.service.ILawsBindPartDocService; import com.jero.modules.docking.srms.dto.ByTokenRequests; import com.jero.modules.docking.srms.dto.ProductDesign; import com.jero.modules.docking.srms.entity.LawsPartStandard; @@ -119,6 +121,9 @@ public class SrmsApiServiceImpl implements SrmsApiService { private IDocumentSplitService documentSplitService; @Resource private CommonAPI commonAPI; + @Resource + private ILawsBindPartDocService lawsBindPartDocService; + @Value("${srms.font_url_pdf}") private String fontUrlPdf; @@ -782,12 +787,42 @@ public class SrmsApiServiceImpl implements SrmsApiService { partNumList.add(js.getString("PartNum")); } - // 根据所有零部件分类码获取相关联的标准 - LambdaQueryWrapper partStandardQueryWrapper = new LambdaQueryWrapper<>(); - partStandardQueryWrapper.in(LawsPartStandard::getPartCategoryNum, partNumList); - this.syncPartStandard(); - List partStandardList = lawsPartStandardService.list(partStandardQueryWrapper); - Set standardIdSet = partStandardList.stream().map(LawsPartStandard::getStandardId).collect(Collectors.toSet()); + // 根据所有零部件号获取相关联的标准 + LambdaQueryWrapper bindPartLambdaQueryWrapper = new LambdaQueryWrapper<>(); + bindPartLambdaQueryWrapper.in(LawsBindPart::getPartNo, partNumList); + List partStandardList = lawsBindPartService.list(bindPartLambdaQueryWrapper); + Set standardIdSet = partStandardList.stream().map(LawsBindPart::getStandardId).collect(Collectors.toSet()); + Map> standardIdMap = partStandardList.stream() + .collect(Collectors.groupingBy(LawsBindPart::getStandardId)); + + if (CollectionUtils.isEmpty(standardIdSet)) { + throw new JeroBootException("无零部件号对应的绑定关系"); + } + + Map> standardIdClauseIdMap = new HashMap<>(); + Set allClauseIdSet = new HashSet<>(); + for (String id : standardIdSet) { + List lawsBindParts = standardIdMap.get(id); + // 获取所有记录id + List idList = lawsBindParts.stream().map(LawsBindPart::getId).collect(Collectors.toList()); + // 获取所有绑定的条款记录 + List lawsBindPartDocs = lawsBindPartDocService.list(new QueryWrapper().in("bind_id", idList)); + if (CollectionUtils.isEmpty(lawsBindPartDocs)) { + continue; + } + Set clauseIdSet = lawsBindPartDocs.stream().map(LawsBindPartDoc::getClauseId).collect(Collectors.toSet()); + allClauseIdSet.addAll(clauseIdSet); + standardIdClauseIdMap.put(id, clauseIdSet); + } + + // 找到所有拆分条款信息 + Map docDetailMap = new HashMap<>(); + if (CollectionUtils.isNotEmpty(allClauseIdSet)) { + List lawsClauseList = lawsDocumentSplitMapper + .selectList(new QueryWrapper().in("id", allClauseIdSet)); + docDetailMap = lawsClauseList.stream() + .collect(Collectors.toMap(LawsDocumentSplit::getId, e -> e)); + } // 获取所有可选的标准 List allStandardInfoList = this.getAllStandardInfo(); @@ -811,15 +846,13 @@ public class SrmsApiServiceImpl implements SrmsApiService { for (String standardId : standardIdSet) { // 获取标准相关信息 BindPartStandardVO standard = allStandardInfoMap.get(standardId); - // 判断是否有拆分信息 - String infoId = standard.getInfoId(); - boolean isSplit = StrUtil.isNotBlank(infoId); + // 判断是否有绑定条款信息 + Set clauseIds = standardIdClauseIdMap.get(standardId); + boolean isBindDoc = CollectionUtils.isNotEmpty(clauseIds); // 根据info_id 获取所有拆分数据 后按照拆分数据条数填充rows - if (isSplit) { - parameter.put("info_id", infoId); - IPage> data = documentSplitService.queryDocumentSplitDetail(parameter, false); - List> records = data.getRecords(); - for (Map r : records) { + if (isBindDoc) { + for (String clauseId : clauseIds) { + LawsDocumentSplit split = docDetailMap.get(clauseId); JSONObject row = new JSONObject(); row.put("standardNumber", standard.getStandardNumber()); row.put("standardName", standard.getStandardName()); @@ -833,10 +866,10 @@ public class SrmsApiServiceImpl implements SrmsApiService { row.put("Remark2", ""); row.put("Remark3", ""); JSONObject documentSplitDetail = new JSONObject(); - documentSplitDetail.put("id", r.get("id")); - documentSplitDetail.put("itemNum", r.get("item_num")); - documentSplitDetail.put("itemTitle", r.get("item_title")); - documentSplitDetail.put("itemContent", r.get("item_content")); + documentSplitDetail.put("id", split.getId()); + documentSplitDetail.put("itemNum", split.getItemNum()); + documentSplitDetail.put("itemTitle", split.getItemTitle()); + documentSplitDetail.put("itemContent", split.getItemTitle()); documentSplitDetail.put("Remark1", ""); documentSplitDetail.put("Remark2", ""); documentSplitDetail.put("Remark3", "");