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); log.error("E采通获取标准信息异常:", e);
return ResponsesUtil.getJsonResult( return ResponsesUtil.getJsonResult(
srmsApiService.getMessageHandler("interface_id", uuid, "SCM"), 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.RedisUtil;
import com.jero.common.util.TokenUtils; import com.jero.common.util.TokenUtils;
import com.jero.modules.bindPart.entity.BindPartStandardVO; 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.ByTokenRequests;
import com.jero.modules.docking.srms.dto.ProductDesign; import com.jero.modules.docking.srms.dto.ProductDesign;
import com.jero.modules.docking.srms.entity.LawsPartStandard; import com.jero.modules.docking.srms.entity.LawsPartStandard;
@@ -119,6 +121,9 @@ public class SrmsApiServiceImpl implements SrmsApiService {
private IDocumentSplitService documentSplitService; private IDocumentSplitService documentSplitService;
@Resource @Resource
private CommonAPI commonAPI; private CommonAPI commonAPI;
@Resource
private ILawsBindPartDocService lawsBindPartDocService;
@Value("${srms.font_url_pdf}") @Value("${srms.font_url_pdf}")
private String fontUrlPdf; private String fontUrlPdf;
@@ -782,12 +787,42 @@ public class SrmsApiServiceImpl implements SrmsApiService {
partNumList.add(js.getString("PartNum")); partNumList.add(js.getString("PartNum"));
} }
// 根据所有零部件分类码获取相关联的标准 // 根据所有零部件号获取相关联的标准
LambdaQueryWrapper<LawsPartStandard> partStandardQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<LawsBindPart> bindPartLambdaQueryWrapper = new LambdaQueryWrapper<>();
partStandardQueryWrapper.in(LawsPartStandard::getPartCategoryNum, partNumList); bindPartLambdaQueryWrapper.in(LawsBindPart::getPartNo, partNumList);
this.syncPartStandard(); List<LawsBindPart> partStandardList = lawsBindPartService.list(bindPartLambdaQueryWrapper);
List<LawsPartStandard> partStandardList = lawsPartStandardService.list(partStandardQueryWrapper); Set<String> standardIdSet = partStandardList.stream().map(LawsBindPart::getStandardId).collect(Collectors.toSet());
Set<String> standardIdSet = partStandardList.stream().map(LawsPartStandard::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(); List<BindPartStandardVO> allStandardInfoList = this.getAllStandardInfo();
@@ -811,15 +846,13 @@ public class SrmsApiServiceImpl implements SrmsApiService {
for (String standardId : standardIdSet) { for (String standardId : standardIdSet) {
// 获取标准相关信息 // 获取标准相关信息
BindPartStandardVO standard = allStandardInfoMap.get(standardId); BindPartStandardVO standard = allStandardInfoMap.get(standardId);
// 判断是否有拆分信息 // 判断是否有绑定条款信息
String infoId = standard.getInfoId(); Set<String> clauseIds = standardIdClauseIdMap.get(standardId);
boolean isSplit = StrUtil.isNotBlank(infoId); boolean isBindDoc = CollectionUtils.isNotEmpty(clauseIds);
// 根据info_id 获取所有拆分数据 后按照拆分数据条数填充rows // 根据info_id 获取所有拆分数据 后按照拆分数据条数填充rows
if (isSplit) { if (isBindDoc) {
parameter.put("info_id", infoId); for (String clauseId : clauseIds) {
IPage<Map<String, Object>> data = documentSplitService.queryDocumentSplitDetail(parameter, false); LawsDocumentSplit split = docDetailMap.get(clauseId);
List<Map<String, Object>> records = data.getRecords();
for (Map<String, Object> r : records) {
JSONObject row = new JSONObject(); JSONObject row = new JSONObject();
row.put("standardNumber", standard.getStandardNumber()); row.put("standardNumber", standard.getStandardNumber());
row.put("standardName", standard.getStandardName()); row.put("standardName", standard.getStandardName());
@@ -833,10 +866,10 @@ public class SrmsApiServiceImpl implements SrmsApiService {
row.put("Remark2", ""); row.put("Remark2", "");
row.put("Remark3", ""); row.put("Remark3", "");
JSONObject documentSplitDetail = new JSONObject(); JSONObject documentSplitDetail = new JSONObject();
documentSplitDetail.put("id", r.get("id")); documentSplitDetail.put("id", split.getId());
documentSplitDetail.put("itemNum", r.get("item_num")); documentSplitDetail.put("itemNum", split.getItemNum());
documentSplitDetail.put("itemTitle", r.get("item_title")); documentSplitDetail.put("itemTitle", split.getItemTitle());
documentSplitDetail.put("itemContent", r.get("item_content")); documentSplitDetail.put("itemContent", split.getItemTitle());
documentSplitDetail.put("Remark1", ""); documentSplitDetail.put("Remark1", "");
documentSplitDetail.put("Remark2", ""); documentSplitDetail.put("Remark2", "");
documentSplitDetail.put("Remark3", ""); documentSplitDetail.put("Remark3", "");