PatentController.java 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. package com.example.xiaoshiweixinback.controller;
  2. import com.alibaba.fastjson2.JSONObject;
  3. import com.example.xiaoshiweixinback.business.common.Constants;
  4. import com.example.xiaoshiweixinback.business.common.Response;
  5. import com.example.xiaoshiweixinback.business.common.base.Records;
  6. import com.example.xiaoshiweixinback.business.exception.BusinessException;
  7. import com.example.xiaoshiweixinback.business.utils.FileUtils;
  8. import com.example.xiaoshiweixinback.checkLogin.checkLogin;
  9. import com.example.xiaoshiweixinback.entity.dataRecord.DataRangeRecord;
  10. import com.example.xiaoshiweixinback.entity.dto.GetPatentByRecordDTO;
  11. import com.example.xiaoshiweixinback.entity.dto.PatentNoDTO;
  12. import com.example.xiaoshiweixinback.entity.dto.esPicture.EsPictureNoDTO;
  13. import com.example.xiaoshiweixinback.entity.dto.esPicture.EsPatentVectorDTO;
  14. import com.example.xiaoshiweixinback.entity.dto.patent.*;
  15. import com.example.xiaoshiweixinback.entity.vo.esPicture.EsPictureNoVo;
  16. import com.example.xiaoshiweixinback.service.MonitorRecordService;
  17. import com.example.xiaoshiweixinback.service.PatentService;
  18. import com.example.xiaoshiweixinback.service.exportPatent.PatentExportService;
  19. import com.example.xiaoshiweixinback.service.importPatent.EsDenseVectorService;
  20. import com.example.xiaoshiweixinback.service.importPatent.EsPatentService;
  21. import com.example.xiaoshiweixinback.service.importPatent.GetPatentFromExcelService;
  22. import com.example.xiaoshiweixinback.service.importPatent.ImportFromWebToEsService;
  23. import com.example.xiaoshiweixinback.useFunctionRecordAop.useFunctionRecord;
  24. import io.swagger.v3.oas.annotations.Operation;
  25. import org.apache.commons.lang3.StringUtils;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.core.io.InputStreamResource;
  28. import org.springframework.http.HttpHeaders;
  29. import org.springframework.http.MediaType;
  30. import org.springframework.http.ResponseEntity;
  31. import org.springframework.web.bind.annotation.*;
  32. import org.springframework.web.multipart.MultipartFile;
  33. import java.io.ByteArrayInputStream;
  34. import java.io.File;
  35. import java.io.IOException;
  36. import java.net.URLEncoder;
  37. import java.nio.charset.StandardCharsets;
  38. import java.util.List;
  39. @RequestMapping(Constants.XIAOSHI_WEIXINBACK + "/patent")
  40. @RestController
  41. public class PatentController {
  42. @Autowired
  43. private ImportFromWebToEsService importFromWebToEsService;
  44. @Autowired
  45. private EsDenseVectorService esDenseVectorService;
  46. @Autowired
  47. private GetPatentFromExcelService getPatentFromExcelService;
  48. @Autowired
  49. private EsPatentService esPatentService;
  50. @Autowired
  51. private PatentExportService patentExportService;
  52. @Autowired
  53. private PatentService patentService;
  54. @Autowired
  55. private MonitorRecordService monitorRecordService;
  56. //--------------------------- 导入 --------------------------
  57. @Operation(summary = "导入专利")
  58. @PostMapping(value = "/importPatent")
  59. public Response queryPatent(@RequestBody ImportTaskAMVO importTaskAMVO) {
  60. try {
  61. importFromWebToEsService.ImportTask(importTaskAMVO);
  62. } catch (Exception e) {
  63. e.printStackTrace();
  64. }
  65. return Response.success("");
  66. }
  67. @Operation(summary = "excel导入")
  68. @GetMapping(value = "/importPatentE")
  69. public Response importPatentE(String path) {
  70. try {
  71. getPatentFromExcelService.run(path);
  72. } catch (Exception e) {
  73. e.printStackTrace();
  74. }
  75. return Response.success("");
  76. }
  77. //--------------------------- 关于图片的专利检索 --------------------------
  78. @Operation(summary = "根据关键词获取列表(图片用于排序)--zero")
  79. @PostMapping(value = "/getPatentVectors")
  80. @useFunctionRecord
  81. public Response getPatentVectors(@RequestParam(value = "vectorDTO", required = false) String vectorDTO, @RequestParam(value = "multipartFile", required = false) MultipartFile multipartFile) throws Exception {
  82. Records records = null;
  83. try {
  84. File file = FileUtils.multipartFileToFile(multipartFile);
  85. EsPatentVectorDTO esPatentVectorDTO = new EsPatentVectorDTO();
  86. if (StringUtils.isNotEmpty(vectorDTO)) {
  87. esPatentVectorDTO = JSONObject.parseObject(vectorDTO, EsPatentVectorDTO.class);
  88. }
  89. records = esDenseVectorService.getPatentVectors(esPatentVectorDTO, file);
  90. } catch (Exception e) {
  91. if(e instanceof BusinessException)
  92. { BusinessException b =(BusinessException) e;
  93. return Response.error(b.getErrorCode(), e.getMessage());}
  94. return Response.error(e.getMessage());
  95. }
  96. return Response.success(records);
  97. }
  98. @Operation(summary = "根据专利号获取相关图片--zero")
  99. @PostMapping(value = "/getPictureByNo")
  100. public Response getPictureByNo(@RequestBody EsPictureNoDTO pictureNoDTO) throws Exception {
  101. List<EsPictureNoVo> pictureByNo = esDenseVectorService.getPictureByNo3(pictureNoDTO);
  102. return Response.success(pictureByNo);
  103. }
  104. //--------------------------- 收藏专利相关 --------------------------
  105. @checkLogin
  106. @Operation(summary = "收藏专利--zero")
  107. @PostMapping(value = "/collectPatent")
  108. public Response collectPatent(@RequestBody CollectPatentDTO patentDTO) {
  109. boolean b = false;
  110. try {
  111. b = esPatentService.collectPatent(patentDTO);
  112. } catch (IOException e) {
  113. return Response.error(e.getMessage());
  114. }
  115. return Response.success(b);
  116. }
  117. @Operation(summary = "查询收藏专利--zero")
  118. @PostMapping(value = "/selectCollectPatent")
  119. public Response selectCollectPatent(@RequestBody SelectCollectPatentDTO patentDTO) throws Exception {
  120. Records records = esPatentService.selectCollectPatent(patentDTO);
  121. return Response.success(records);
  122. }
  123. @Operation(summary = "删除收藏专利--zero")
  124. @PostMapping(value = "/delCollectPatent")
  125. public Response delCollectPatent(@RequestBody DelCollectPatentDTO patentDTO) throws IOException {
  126. boolean b = false;
  127. try {
  128. b = esPatentService.delCollectPatent(patentDTO);
  129. } catch (IOException e) {
  130. return Response.error(e.getMessage());
  131. }
  132. return Response.success(b);
  133. }
  134. //--------------------------- 查询专利 --------------------------
  135. @Operation(summary = "查询专利(用于导出专利数据)--zero")
  136. @PostMapping(value = "/selectPatent")
  137. public Response selectPatent(@RequestParam(value = "searchQuery", required = false) String searchQuery, @RequestParam(value = "multipartFile", required = false) MultipartFile multipartFile) throws Exception {
  138. File file = FileUtils.multipartFileToFile(multipartFile);
  139. SelectPatentDTO patentDTO = new SelectPatentDTO();
  140. if (StringUtils.isNotEmpty(searchQuery)) {
  141. patentDTO = JSONObject.parseObject(searchQuery, SelectPatentDTO.class);
  142. }
  143. List<PatentColumnDTO> columnDTOS = esPatentService.selectPatent(patentDTO, file);
  144. return Response.success(columnDTOS);
  145. }
  146. @Operation(summary = "根据专利号查询专利详情")
  147. @PostMapping(value = "/selectPatentInfoByPatentNo")
  148. public Response selectPatentInfoByPatentNo(@RequestBody PatentNoDTO patentNoDTO) throws IOException {
  149. String patentNo = patentNoDTO.getPatentNo();
  150. PatentColumnDTO columnDTO = esPatentService.selectPatentInfoByPatentNo(patentNo);
  151. return Response.success(columnDTO);
  152. }
  153. //--------------------------导出专利-------------------------------
  154. @PostMapping(value = "/exportPatent")
  155. @Operation(summary = "导出专利数据")
  156. public Response exportPatent(@RequestBody ExportPatentDTO exportPatentDTO) throws IOException {
  157. String fileGuid = patentExportService.exportPatent(exportPatentDTO.getPatentNos());
  158. Records records = new Records();
  159. records.setData(fileGuid);
  160. return Response.success(records);
  161. }
  162. @GetMapping(value = "/getDataRangeRecord")
  163. @Operation(summary = "获取专利数据库数据信息")
  164. public Response getDataRangeRecord() throws IOException {
  165. List<DataRangeRecord> dataRangeRecords = patentService.getDataRangeRecord();
  166. Records records = new Records();
  167. records.setData(dataRangeRecords);
  168. return Response.success(records);
  169. }
  170. @PostMapping(value = "/getPatentByRecord")
  171. @Operation(summary = "查询监控记录的专利信息")
  172. public Response getPatentByRecord(@RequestBody GetPatentByRecordDTO getPatentByRecordDTO) throws IOException {
  173. Records records = monitorRecordService.getPatentByRecord(getPatentByRecordDTO);
  174. return Response.success(records);
  175. }
  176. }