fix: E采通获取标准信息从绑定零部件中获取信息

This commit is contained in:
2024-06-24 11:12:33 +08:00
parent 6452c0c59f
commit 50889ff571
2 changed files with 52 additions and 19 deletions
@@ -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));
}
}
@@ -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<LawsPartStandard> partStandardQueryWrapper = new LambdaQueryWrapper<>();
partStandardQueryWrapper.in(LawsPartStandard::getPartCategoryNum, partNumList);
this.syncPartStandard();
List<LawsPartStandard> partStandardList = lawsPartStandardService.list(partStandardQueryWrapper);
Set<String> standardIdSet = partStandardList.stream().map(LawsPartStandard::getStandardId).collect(Collectors.toSet());
// 根据所有零部件获取相关联的标准
LambdaQueryWrapper<LawsBindPart> bindPartLambdaQueryWrapper = new LambdaQueryWrapper<>();
bindPartLambdaQueryWrapper.in(LawsBindPart::getPartNo, partNumList);
List<LawsBindPart> partStandardList = lawsBindPartService.list(bindPartLambdaQueryWrapper);
Set<String> standardIdSet = partStandardList.stream().map(LawsBindPart::getStandardId).collect(Collectors.toSet());
Map<String, List<LawsBindPart>> standardIdMap = partStandardList.stream()
.collect(Collectors.groupingBy(LawsBindPart::getStandardId));
if (CollectionUtils.isEmpty(standardIdSet)) {
throw new JeroBootException("无零部件号对应的绑定关系");
}
Map<String, Set<String>> standardIdClauseIdMap = new HashMap<>();
Set<String> allClauseIdSet = new HashSet<>();
for (String id : standardIdSet) {
List<LawsBindPart> lawsBindParts = standardIdMap.get(id);
// 获取所有记录id
List<String> idList = lawsBindParts.stream().map(LawsBindPart::getId).collect(Collectors.toList());
// 获取所有绑定的条款记录
List<LawsBindPartDoc> lawsBindPartDocs = lawsBindPartDocService.list(new QueryWrapper<LawsBindPartDoc>().in("bind_id", idList));
if (CollectionUtils.isEmpty(lawsBindPartDocs)) {
continue;
}
Set<String> clauseIdSet = lawsBindPartDocs.stream().map(LawsBindPartDoc::getClauseId).collect(Collectors.toSet());
allClauseIdSet.addAll(clauseIdSet);
standardIdClauseIdMap.put(id, clauseIdSet);
}
// 找到所有拆分条款信息
Map<String, LawsDocumentSplit> docDetailMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(allClauseIdSet)) {
List<LawsDocumentSplit> lawsClauseList = lawsDocumentSplitMapper
.selectList(new QueryWrapper<LawsDocumentSplit>().in("id", allClauseIdSet));
docDetailMap = lawsClauseList.stream()
.collect(Collectors.toMap(LawsDocumentSplit::getId, e -> e));
}
// 获取所有可选的标准
List<BindPartStandardVO> 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<String> clauseIds = standardIdClauseIdMap.get(standardId);
boolean isBindDoc = CollectionUtils.isNotEmpty(clauseIds);
// 根据info_id 获取所有拆分数据 后按照拆分数据条数填充rows
if (isSplit) {
parameter.put("info_id", infoId);
IPage<Map<String, Object>> data = documentSplitService.queryDocumentSplitDetail(parameter, false);
List<Map<String, Object>> records = data.getRecords();
for (Map<String, Object> 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", "");