package cn.cslg.pas.factorys.noveltyTemplateFacotry; 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 GetshidaixinganTempalte implements GetTemplateMapsImp { @Autowired private EsPatentService esPatentService; @Override public Map getMap(List queryNoveltyProjectVOs,TechnicalCaseVO technicalCaseVO,List compareLiteratureVOS,List noveltyCompareRecordQueryVOS,List retrieveRecordVOS){ Map map =new HashMap<>(); Map baseMap = this.getBaseMap(queryNoveltyProjectVOs); 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) { 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.getCaseName() != null) { baseMap.put("searchName", queryNoveltyProjectVO.getCreateName()); } 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("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("searchCondition", item.getConditions()); String dbType = item.getDbType(); if (dbType == null || dbType.trim().equals("")) { dbType = "小世系统"; } String re = NoveltyTempalteUtil.getDbTypes(dbType); if (re == null) { re = ""; } map.put("area", re); map.put("dbType", dbType); map.put("totalNum", item.getTotalNum()); Date retrieveTime = item.getRetrieveTime(); if (retrieveTime != null) { String dateStr = DateUtils.formatDate(retrieveTime, "yyyy-MM-dd"); map.put("retrieveTime", dateStr); } maps.add(map); }); } return maps; } }