GetshidaixinganTempalte.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. package cn.cslg.pas.factorys.noveltyTemplateFacotry;
  2. import cn.cslg.pas.common.model.cronModel.SystemFile;
  3. import cn.cslg.pas.common.utils.DateUtils;
  4. import cn.cslg.pas.common.utils.StringUtils;
  5. import cn.cslg.pas.common.vo.CompareLiteratureVO;
  6. import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordQueryVO;
  7. import cn.cslg.pas.common.vo.NoveltyProjectVO.NoveltyCompareRecordVO;
  8. import cn.cslg.pas.common.vo.NoveltyProjectVO.RetrieveRecordVO;
  9. import cn.cslg.pas.common.vo.QueryNoveltyProjectVO;
  10. import cn.cslg.pas.common.vo.TechnicalCaseVO;
  11. import cn.cslg.pas.domain.es.Patent;
  12. import cn.cslg.pas.domain.es.PatentPerson;
  13. import cn.cslg.pas.service.business.es.EsPatentService;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Component;
  16. import java.util.*;
  17. import java.util.stream.Collectors;
  18. /**
  19. * @Author lrj
  20. * @Date 2025/02/20
  21. */
  22. @Component
  23. public class GetshidaixinganTempalte implements GetTemplateMapsImp {
  24. @Autowired
  25. private EsPatentService esPatentService;
  26. @Override
  27. public Map<String,Object> getMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs,TechnicalCaseVO technicalCaseVO,List<CompareLiteratureVO> compareLiteratureVOS,List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOS,List<RetrieveRecordVO> retrieveRecordVOS){
  28. Map<String,Object> map =new HashMap<>();
  29. Map<String, Object> baseMap = this.getBaseMap(queryNoveltyProjectVOs);
  30. Map<String, Object> technicalCaseMap = this.getTechnicalCaseMap(technicalCaseVO);
  31. List<Map<String, Object>> compareLiteratureMap = this.getCompareLiteratureMap(compareLiteratureVOS);
  32. List<Map<String, Object>> compareRecordMap = this.getCompareRecordMap(noveltyCompareRecordQueryVOS, compareLiteratureVOS);
  33. List<Map<String, Object>> searchRecordMap = this.getSearchRecordMap(retrieveRecordVOS);
  34. map.put("baseMessage", baseMap);
  35. map.put("technicalCase", technicalCaseMap);
  36. map.put("compareLiterature", compareLiteratureMap);
  37. map.put("compareRecord", compareRecordMap);
  38. map.put("searchRecord", searchRecordMap);
  39. return map;
  40. }
  41. @Override
  42. public Map<String, Object> getTechnicalCaseMap(TechnicalCaseVO technicalCaseVO) {
  43. Map<String, Object> technicalMap = new HashMap<>();
  44. technicalMap.put("inventionPoint", technicalCaseVO.getInventionPoint());
  45. technicalMap.put("solvedProblem", technicalCaseVO.getSolvedProblem());
  46. List<SystemFile> systemFileList = technicalCaseVO.getSystemFileList();
  47. if (systemFileList != null && systemFileList.size() != 0) {
  48. List<String> fileGuids = systemFileList.stream().map(SystemFile::getGuid).collect(Collectors.toList());
  49. technicalMap.put("picture", fileGuids);
  50. }
  51. return technicalMap;
  52. }
  53. @Override
  54. public Map<String, Object> getBaseMap(List<QueryNoveltyProjectVO> queryNoveltyProjectVOs) {
  55. Map<String, Object> baseMap = new HashMap<>();
  56. if (queryNoveltyProjectVOs == null || queryNoveltyProjectVOs.size() == 0) {
  57. return baseMap;
  58. }
  59. QueryNoveltyProjectVO queryNoveltyProjectVO = queryNoveltyProjectVOs.get(0);
  60. baseMap.put("searchUnitContact", queryNoveltyProjectVO.getSearchUnitContact());
  61. baseMap.put("applicants", queryNoveltyProjectVO.getApplicants());
  62. baseMap.put("customCaseNumber", queryNoveltyProjectVO.getCustomCaseNumber());
  63. baseMap.put("caseName", queryNoveltyProjectVO.getCaseName());
  64. baseMap.put("technicalContact", queryNoveltyProjectVO.getTechnicalContact());
  65. baseMap.put("searchUnit", queryNoveltyProjectVO.getSearchUnit());
  66. baseMap.put("inventor", queryNoveltyProjectVO.getInventor());
  67. baseMap.put("inventorContact", "");
  68. baseMap.put("distinguishTechnical", "");
  69. baseMap.put("remark", queryNoveltyProjectVO.getRemark());
  70. baseMap.put("analyse", "");
  71. baseMap.put("preliminaryConclusions", queryNoveltyProjectVO.getPreliminaryConclusions());
  72. baseMap.put("applicationAdvice", queryNoveltyProjectVO.getApplicationAdvice());
  73. baseMap.put("conclusions", NoveltyTempalteUtil.reFinalConclusions(Arrays.asList(queryNoveltyProjectVO.getPreliminaryConclusions(), queryNoveltyProjectVO.getApplicationAdvice())));
  74. baseMap.put("ifPatentability", "是");
  75. baseMap.put("ipr", queryNoveltyProjectVO.getIpr());
  76. if (queryNoveltyProjectVO.getHeadName() != null) {
  77. baseMap.put("searchName", queryNoveltyProjectVO.getHeadName());
  78. } else if (queryNoveltyProjectVO.getCaseName() != null) {
  79. baseMap.put("searchName", queryNoveltyProjectVO.getCreateName());
  80. }
  81. return baseMap;
  82. }
  83. @Override
  84. public List<Map<String, Object>> getCompareLiteratureMap(List<CompareLiteratureVO> compareLiteratureVOS) {
  85. List<Map<String, Object>> maps = new ArrayList<>();
  86. List<Patent> patents = new ArrayList<>();
  87. if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) {
  88. return maps;
  89. }
  90. try {
  91. List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
  92. patents = esPatentService.getPatentsByNo(patentNos, false, null, null);
  93. } catch (Exception e) {
  94. e.printStackTrace();
  95. }
  96. if (compareLiteratureVOS != null) {
  97. int index = 1;
  98. for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
  99. String no = compareLiteratureVO.getLiteratureNo();
  100. Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(no)).findFirst().orElse(null);
  101. String pubilcNo = patent.getGrantNo();
  102. if (pubilcNo == null) {
  103. pubilcNo = patent.getPublicNo();
  104. }
  105. Date publicDate = patent.getGrantDate();
  106. if (publicDate == null) {
  107. publicDate = patent.getPublicDate();
  108. }
  109. Map<String, Object> map = new HashMap<>();
  110. map.put("publicNo", pubilcNo);
  111. if(patent!=null&&patent.getTitle()!=null&&patent.getTitle().size()>0){
  112. String content=patent.getTitle().get(0).getTextContent();
  113. map.put("title", content);
  114. }
  115. if (publicDate != null) {
  116. String dateStr = DateUtils.formatDate(publicDate, "yyyy-MM-dd");
  117. map.put("publicDate", dateStr);
  118. }
  119. if(patent!=null&&patent.getApplicant()!=null&&patent.getApplicant().size()>0){
  120. List<String> names =patent.getApplicant().stream().map(PatentPerson::getName).collect(Collectors.toList());
  121. String nameStr=StringUtils.join(names,"、");
  122. map.put("applicant",nameStr);
  123. }
  124. maps.add(map);
  125. index++;
  126. }
  127. }
  128. return maps;
  129. }
  130. @Override
  131. public List<Map<String, Object>> getCompareRecordMap(List<NoveltyCompareRecordQueryVO> noveltyCompareRecordQueryVOs, List<CompareLiteratureVO> compareLiteratureVOS) {
  132. List<Map<String, Object>> maps = new ArrayList<>();
  133. if (compareLiteratureVOS == null || compareLiteratureVOS.size() == 0) {
  134. return maps;
  135. }
  136. List<String> patentNos = compareLiteratureVOS.stream().map(CompareLiteratureVO::getLiteratureNo).collect(Collectors.toList());
  137. List<Patent> patents = new ArrayList<>();
  138. try {
  139. patents = esPatentService.getPatentsByNo(patentNos, false, null, null);
  140. } catch (Exception e) {
  141. e.printStackTrace();
  142. }
  143. Integer index = 1;
  144. for (CompareLiteratureVO compareLiteratureVO : compareLiteratureVOS) {
  145. Map<String, Object> map = new HashMap<>();
  146. String patentNo = compareLiteratureVO.getLiteratureNo();
  147. StringBuilder str = new StringBuilder("对比文件");
  148. str.append(index);
  149. str.append(":");
  150. str.append(patentNo);
  151. String abstr = "";
  152. Patent patent = patents.stream().filter(item -> item.getPatentNo().equals(patentNo)).findFirst().orElse(null);
  153. if (patent != null && patent.getTitle() != null && patent.getTitle().size() != 0) {
  154. str.append(patent.getTitle().get(0).getTextContent());
  155. }
  156. str.append("<br>");
  157. if (patent != null && patent.getAbstractStr() != null && patent.getAbstractStr().size() > 0) {
  158. abstr = "[摘要原文]" + patent.getAbstractStr().get(0).getTextContent();
  159. }
  160. List<String> contentList = new ArrayList<>();
  161. List<NoveltyCompareRecordVO> noveltyCompareRecordVOS = compareLiteratureVO.getNoveltyCompareRecordVOS();
  162. if (noveltyCompareRecordVOS != null) {
  163. for (NoveltyCompareRecordVO item : noveltyCompareRecordVOS) {
  164. String markText = item.getMarkNoteText();
  165. String finText = abstr + "(" + markText + ")";
  166. contentList.add(finText);
  167. }
  168. }
  169. List<NoveltyCompareRecordQueryVO> tempRecordVos = noveltyCompareRecordQueryVOs.stream().filter(item -> item.getPatentNo().equals(patentNo)).collect(Collectors.toList());
  170. if (tempRecordVos != null && tempRecordVos.size() != 0) {
  171. for (int i = 0; i < tempRecordVos.size(); i++) {
  172. NoveltyCompareRecordQueryVO vo = tempRecordVos.get(i);
  173. String markSelectField = vo.getMarkSelectField();
  174. String markSelectText = vo.getMarkSelectText();
  175. String technicalFeature = vo.getTechnicalFeature();
  176. String markNoteText = vo.getMarkNoteText();
  177. StringBuilder stringBuilder = new StringBuilder();
  178. stringBuilder.append("[" + markSelectField + "]");
  179. stringBuilder.append(markSelectText);
  180. if (technicalFeature != null && !technicalFeature.trim().equals("")) {
  181. stringBuilder.append("揭示了" + technicalFeature);
  182. }
  183. stringBuilder.append(markNoteText);
  184. contentList.add(stringBuilder.toString());
  185. }
  186. }
  187. String content = "";
  188. if (contentList.size() > 0) {
  189. content = StringUtils.join(contentList, "<br>");
  190. }
  191. str.append(content);
  192. map.put("content", str);
  193. maps.add(map);
  194. index++;
  195. }
  196. return maps;
  197. }
  198. @Override
  199. public List<Map<String, Object>> getSearchRecordMap(List<RetrieveRecordVO> retrieveRecordVOS) {
  200. List<Map<String, Object>> maps = new ArrayList<>();
  201. if (retrieveRecordVOS != null) {
  202. retrieveRecordVOS.forEach(item -> {
  203. Map<String, Object> map = new HashMap<>();
  204. map.put("searchCondition", item.getConditions());
  205. String dbType = item.getDbType();
  206. if (dbType == null || dbType.trim().equals("")) {
  207. dbType = "小世系统";
  208. }
  209. String re = NoveltyTempalteUtil.getDbTypes(dbType);
  210. if (re == null) {
  211. re = "";
  212. }
  213. map.put("area", re);
  214. map.put("dbType", dbType);
  215. map.put("totalNum", item.getTotalNum());
  216. Date retrieveTime = item.getRetrieveTime();
  217. if (retrieveTime != null) {
  218. String dateStr = DateUtils.formatDate(retrieveTime, "yyyy-MM-dd");
  219. map.put("retrieveTime", dateStr);
  220. }
  221. maps.add(map);
  222. });
  223. }
  224. return maps;
  225. }
  226. }