package cn.cslg.pas.factorys.noveltyTemplateFacotry; import cn.cslg.pas.common.model.cronModel.PersonnelVO; import cn.cslg.pas.common.model.cronModel.SystemFile; import cn.cslg.pas.common.utils.DateUtils; import cn.cslg.pas.common.utils.StringUtils; import cn.cslg.pas.common.vo.CompareLiteratureVO; import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO; import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO; import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO; import cn.cslg.pas.common.vo.QueryNoveltyProjectVO; import cn.cslg.pas.common.vo.TechnicalCaseVO; import cn.cslg.pas.domain.es.Patent; import cn.cslg.pas.domain.es.PatentPerson; import cn.cslg.pas.service.business.es.EsPatentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.*; import java.util.stream.Collectors; /** * @Author lrj * @Date 2025/02/20 */ @Component public class GetningdeTempalte implements GetTemplateMapsImp { @Autowired private EsPatentService esPatentService; @Override public Map getMap(List queryNoveltyProjectVOs, TechnicalCaseVO technicalCaseVO, List compareLiteratureVOS, List noveltyCompareRecordQueryVOS, List retrieveRecordVOS,PersonnelVO personnelVO) { Map map = new HashMap<>(); Map baseMap = this.getBaseMap(queryNoveltyProjectVOs, retrieveRecordVOS,personnelVO); Map technicalCaseMap = this.getTechnicalCaseMap(technicalCaseVO); List> compareLiteratureMap = this.getCompareLiteratureMap(compareLiteratureVOS); List> compareRecordMap = this.getCompareRecordMap(noveltyCompareRecordQueryVOS, compareLiteratureVOS); List> searchRecordMap = this.getSearchRecordMap(retrieveRecordVOS); map.put("baseMessage", baseMap); map.put("technicalCase", technicalCaseMap); map.put("compareLiterature", compareLiteratureMap); map.put("compareRecord", compareRecordMap); map.put("searchRecord", searchRecordMap); return map; } @Override public Map getTechnicalCaseMap(TechnicalCaseVO technicalCaseVO) { Map technicalMap = new HashMap<>(); technicalMap.put("inventionPoint", technicalCaseVO.getInventionPoint()); technicalMap.put("solvedProblem", technicalCaseVO.getSolvedProblem()); List systemFileList = technicalCaseVO.getSystemFileList(); if (systemFileList != null && systemFileList.size() != 0) { List fileGuids = systemFileList.stream().map(SystemFile::getGuid).collect(Collectors.toList()); technicalMap.put("picture", fileGuids); } return technicalMap; } @Override public Map getBaseMap(List queryNoveltyProjectVOs,List retrieveRecordVOS,PersonnelVO personnelVO) { Map baseMap = new HashMap<>(); if (queryNoveltyProjectVOs == null || queryNoveltyProjectVOs.size() == 0) { return baseMap; } QueryNoveltyProjectVO queryNoveltyProjectVO = queryNoveltyProjectVOs.get(0); baseMap.put("searchUnitContact", queryNoveltyProjectVO.getSearchUnitContact()); baseMap.put("applicants", queryNoveltyProjectVO.getApplicants()); baseMap.put("customCaseNumber", queryNoveltyProjectVO.getCustomCaseNumber()); baseMap.put("caseName", queryNoveltyProjectVO.getCaseName()); baseMap.put("technicalContact", queryNoveltyProjectVO.getTechnicalContact()); baseMap.put("searchUnit", queryNoveltyProjectVO.getSearchUnit()); baseMap.put("inventor", queryNoveltyProjectVO.getInventor()); baseMap.put("inventorContact", ""); baseMap.put("distinguishTechnical", ""); baseMap.put("remark", queryNoveltyProjectVO.getRemark()); baseMap.put("analyse", ""); baseMap.put("preliminaryConclusions", queryNoveltyProjectVO.getPreliminaryConclusions()); baseMap.put("applicationAdvice", queryNoveltyProjectVO.getApplicationAdvice()); baseMap.put("conclusions", NoveltyTempalteUtil.reFinalConclusions(Arrays.asList(queryNoveltyProjectVO.getPreliminaryConclusions(), queryNoveltyProjectVO.getApplicationAdvice()))); baseMap.put("ifPatentability", "是"); baseMap.put("ipr", queryNoveltyProjectVO.getIpr()); if (queryNoveltyProjectVO.getHeadName() != null) { baseMap.put("searchName", queryNoveltyProjectVO.getHeadName()); } else if (queryNoveltyProjectVO.getCreateName() != null) { baseMap.put("searchName", queryNoveltyProjectVO.getCreateName()); } if (retrieveRecordVOS != null && retrieveRecordVOS.size() > 0) { RetrieveRecordVO retrieveRecordVO = retrieveRecordVOS.get(retrieveRecordVOS.size() - 1); Date date = retrieveRecordVO.getRetrieveTime(); if (date != null) { String dateStr = DateUtils.formatDate(date, "yyyy-MM-dd"); baseMap.put("searchTime", dateStr); } if (queryNoveltyProjectVO.getSearchUnit() == null || queryNoveltyProjectVO.getSearchUnit().trim().equals("")) { baseMap.put("searchUnit", personnelVO.getTenantName()); } } return baseMap; } @Override public List> getCompareLiteratureMap(List compareLiteratureVOS) { List> maps = new ArrayList<>(); List patents = new ArrayList<>(); if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) { return maps; } try { List patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList()); patents = esPatentService.getPatentsByNo(patentNos, false, null, null); } catch (Exception e) { e.printStackTrace(); } if (compareLiteratureVOS != null) { int index = 1; for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) { String no = compareLiteratureVO.getLiteratureNo(); Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(no)).findFirst().orElse(null); String pubilcNo = patent.getGrantNo(); if (pubilcNo == null) { pubilcNo = patent.getPublicNo(); } Date publicDate = patent.getGrantDate(); if (publicDate == null) { publicDate = patent.getPublicDate(); } Map map = new HashMap<>(); map.put("index", "D" + index); map.put("publicNo", pubilcNo); if (patent != null && patent.getTitle() != null && patent.getTitle().size() > 0) { String content = patent.getTitle().get(0).getTextContent(); map.put("title", content); } if (publicDate != null) { String dateStr = DateUtils.formatDate(publicDate, "yyyy-MM-dd"); map.put("publicDate", dateStr); } if (patent != null && patent.getApplicant() != null && patent.getApplicant().size() > 0) { List names = patent.getApplicant().stream().map(PatentPerson::getName).collect(Collectors.toList()); String nameStr = StringUtils.join(names, "、"); map.put("applicant", nameStr); } maps.add(map); index++; } } return maps; } @Override public List> getCompareRecordMap(List noveltyCompareRecordQueryVOs, List compareLiteratureVOS) { List> maps = new ArrayList<>(); if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) { return maps; } List patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList()); List patents = new ArrayList<>(); try { patents = esPatentService.getPatentsByNo(patentNos, false, null, null); } catch (Exception e) { e.printStackTrace(); } Integer index = 1; for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) { Map map = new HashMap<>(); String patentNo = compareLiteratureVO.getLiteratureNo(); StringBuilder str = new StringBuilder("对比文件"); str.append(index); str.append(":"); str.append(patentNo); String abstr = ""; Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(patentNo)).findFirst().orElse(null); if (patent != null && patent.getTitle() != null && patent.getTitle().size() != 0) { str.append(patent.getTitle().get(0).getTextContent()); } str.append("
"); if (patent != null && patent.getAbstractStr() != null && patent.getAbstractStr().size() > 0) { abstr = "[摘要原文]" + patent.getAbstractStr().get(0).getTextContent(); } List contentList = new ArrayList<>(); List noveltyCompareRecordVOS = compareLiteratureVO.getNoveltyCompareRecordVOS(); if (noveltyCompareRecordVOS != null) { for (NoveltyCompareRecordVO item : noveltyCompareRecordVOS) { String markText = item.getMarkNoteText(); String finText = abstr + "(" + markText + ")"; contentList.add(finText); } } List tempRecordVos = noveltyCompareRecordQueryVOs.stream().filter(item -> item.getPatentNo().equals(patentNo)).collect(Collectors.toList()); if (tempRecordVos != null && tempRecordVos.size() != 0) { for (int i = 0; i < tempRecordVos.size(); i++) { NoveltyCompareRecordQueryVO vo = tempRecordVos.get(i); String markSelectField = vo.getMarkSelectField(); String markSelectText = vo.getMarkSelectText(); String technicalFeature = vo.getTechnicalFeature(); String markNoteText = vo.getMarkNoteText(); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("[" + markSelectField + "]"); stringBuilder.append(markSelectText); if (technicalFeature != null && !technicalFeature.trim().equals("")) { stringBuilder.append("揭示了" + technicalFeature); } stringBuilder.append(markNoteText); contentList.add(stringBuilder.toString()); } } String content = ""; if (contentList.size() > 0) { content = StringUtils.join(contentList, "
"); } str.append(content); map.put("content", str); maps.add(map); index++; } return maps; } @Override public List> getSearchRecordMap(List retrieveRecordVOS) { List> maps = new ArrayList<>(); if (retrieveRecordVOS != null) { retrieveRecordVOS.forEach(item -> { Map map = new HashMap<>(); map.put("conditions", item.getConditions()); maps.add(map); }); } return maps; } public Map getBaseMap(List queryNoveltyProjectVOs, List retrieveRecordVOS) { Map baseMap = new HashMap<>(); if (queryNoveltyProjectVOs == null || queryNoveltyProjectVOs.size() == 0) { return baseMap; } if (retrieveRecordVOS != null && retrieveRecordVOS.size() > 0) { List tools = Arrays.asList("智慧芽", "Patentics", "IncoPat", "DI(科睿唯安)", "obrit", "万象云"); List dbTypes = new ArrayList<>(); retrieveRecordVOS.forEach(item -> { if (tools.contains(item.getDbType())) { dbTypes.add(item.getDbType()); } }); if (dbTypes.size() == 0) { dbTypes.add("其他"); } baseMap.put("searchTool", dbTypes); } QueryNoveltyProjectVO queryNoveltyProjectVO = queryNoveltyProjectVOs.get(0); baseMap.put("searchUnitContact", queryNoveltyProjectVO.getSearchUnitContact()); baseMap.put("applicants", queryNoveltyProjectVO.getApplicants()); baseMap.put("customCaseNumber", queryNoveltyProjectVO.getCustomCaseNumber()); baseMap.put("caseName", queryNoveltyProjectVO.getCaseName()); baseMap.put("technicalContact", queryNoveltyProjectVO.getTechnicalContact()); baseMap.put("searchUnit", queryNoveltyProjectVO.getSearchUnit()); baseMap.put("inventor", queryNoveltyProjectVO.getInventor()); baseMap.put("inventorContact", ""); baseMap.put("distinguishTechnical", ""); baseMap.put("remark", queryNoveltyProjectVO.getRemark()); baseMap.put("analyse", ""); baseMap.put("preliminaryConclusions", queryNoveltyProjectVO.getPreliminaryConclusions()); baseMap.put("applicationAdvice", queryNoveltyProjectVO.getApplicationAdvice()); baseMap.put("conclusions", NoveltyTempalteUtil.reFinalConclusions(Arrays.asList(queryNoveltyProjectVO.getPreliminaryConclusions(), queryNoveltyProjectVO.getApplicationAdvice()))); baseMap.put("ifPatentability", "是"); baseMap.put("ipr", queryNoveltyProjectVO.getIpr()); if (queryNoveltyProjectVO.getHeadName() != null) { baseMap.put("searchName", queryNoveltyProjectVO.getHeadName()); } else if (queryNoveltyProjectVO.getCaseName() != null) { baseMap.put("searchName", queryNoveltyProjectVO.getCreateName()); } return baseMap; } }