GetningdeTempalte.java 14 KB

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