PatentStarApiService.java 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726
  1. package cn.cslg.pas.service.outApi;
  2. import cn.cslg.pas.common.model.PersonnelVO;
  3. import cn.cslg.pas.common.model.outApi.PatentStarDto;
  4. import cn.cslg.pas.common.model.outApi.PatentStarListDto;
  5. import cn.cslg.pas.common.model.vo.outApi.StarPatentVO;
  6. import cn.cslg.pas.common.utils.CacheUtils;
  7. import cn.cslg.pas.common.utils.FormatUtil;
  8. import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
  9. import cn.cslg.pas.domain.*;
  10. import cn.cslg.pas.service.upLoadPatent.RetrieveRecordService;
  11. import com.alibaba.fastjson.JSONArray;
  12. import com.alibaba.fastjson.JSONObject;
  13. import io.swagger.v3.oas.models.security.SecurityScheme;
  14. import lombok.RequiredArgsConstructor;
  15. import lombok.extern.slf4j.Slf4j;
  16. import okhttp3.FormBody;
  17. import okhttp3.OkHttpClient;
  18. import okhttp3.Request;
  19. import okhttp3.Response;
  20. import org.springframework.beans.BeanUtils;
  21. import org.springframework.stereotype.Service;
  22. import java.io.IOException;
  23. import java.util.*;
  24. import java.util.concurrent.TimeUnit;
  25. import java.util.regex.Matcher;
  26. import java.util.regex.Pattern;
  27. /**
  28. * 调用外部接口的Service类 PCS:权限系统
  29. *
  30. * @Author chenyu
  31. * @Date 2023/4/25
  32. */
  33. @RequiredArgsConstructor
  34. @Slf4j
  35. @Service
  36. public class PatentStarApiService {
  37. private final RetrieveRecordService retrieveRecordService;
  38. private final CacheUtils cacheUtils;
  39. private final LoginUtils loginUtils;
  40. public static String formatValue(String value) {
  41. return value.replace("~", ">");
  42. }
  43. public static String formQuery(String query) {
  44. query= query.toUpperCase();
  45. query ="("+query+")";
  46. query = query
  47. .replace(" AND ", "*")
  48. .replace(" OR ", "+")
  49. .replace(" NOT ", "-");
  50. //记录偏移量
  51. int t = 0;
  52. StringBuilder query2 = new StringBuilder(query);
  53. //匹配形如ab=(cd OR ef);
  54. String regexOrg = "([^=^\\+^\\(^\\)]+=\\([^=^\\)]+\\))+?";
  55. Pattern patternOrg = Pattern.compile(regexOrg);
  56. Matcher matcherOrg = patternOrg.matcher(query);
  57. while (matcherOrg.find()) {
  58. String a = matcherOrg.group();
  59. String[] bc = a.split("=");
  60. String b = bc[0];
  61. b.length();
  62. query2.delete(matcherOrg.start() + t, matcherOrg.start() + b.length() + 1 + t);
  63. t = t - b.length() - 1;
  64. String c = bc[1];
  65. String regexOrg1 = "([^\\+^\\*^\\-^\\(^\\)])+";
  66. Pattern patternOrg1 = Pattern.compile(regexOrg1);
  67. Matcher matcherOrg1 = patternOrg1.matcher(c);
  68. while (matcherOrg1.find()) {
  69. String r = matcherOrg1.group();
  70. System.out.println(r);
  71. query2.insert(matcherOrg.start() + b.length() + 1 + matcherOrg1.start() + t, b + "=");
  72. t = t + b.length() + 1;
  73. }
  74. }
  75. System.out.println(query2);
  76. return query2.toString();
  77. }
  78. public static String formatQuery(String query) {
  79. query = PatentStarApiService.formQuery(query);
  80. StringBuilder sb = new StringBuilder(query);
  81. String regex = "(?<=[\\(\\)\\+\\-=\\*])[^\\*^\\-^\\+^\\(^\\)]+?(?=[\\(\\+\\-=\\)\\*])";
  82. Pattern pattern = Pattern.compile(regex);
  83. Matcher matcher = pattern.matcher(query);
  84. Map<Integer, Integer> map = new LinkedHashMap<>();
  85. while (matcher.find()) {
  86. String a = matcher.group();
  87. String regex2 = "[^\\(^\\)^\\+^-^=^*]";
  88. Pattern pattern2 = Pattern.compile(regex2);
  89. Matcher matcher2 = pattern2.matcher(a);
  90. Integer start = matcher.start();
  91. if (matcher2.find()) {
  92. start += matcher2.start();
  93. }
  94. map.put(start, matcher.end());
  95. }
  96. if (map.size() == 0) {
  97. return "";
  98. }
  99. List<Integer> list = new ArrayList<Integer>(map.keySet());
  100. for (int i = 0; i < list.size(); i += 2) {
  101. int start1 = list.get(i);
  102. int end1 = map.get(list.get(i));
  103. int len1 = end1 - start1;
  104. int start2 = list.get(i + 1);
  105. int end2 = map.get(list.get(i + 1));
  106. int len2 = end2 - start2;
  107. int diff = len2 - len1;
  108. if (diff > 0) {
  109. sb.replace(start1, end1, formatValue(query.substring(start2, end2)));
  110. sb.replace(start2 + diff, end2 + diff, query.substring(start1, end1));
  111. } else {
  112. sb.replace(start2, end2, query.substring(start1, end1));
  113. sb.replace(start1, end1, formatValue(query.substring(start2, end2)));
  114. }
  115. }
  116. String reStr = sb.toString();
  117. reStr = "FXX" + reStr.replace("=", "/");
  118. return reStr;
  119. }
  120. //装载专利信息
  121. public void loadStarPatentVOS(List<StarPatentVO> starPatentVOS,JSONObject Data) {
  122. String aa =Data.toString();
  123. starPatentVOS.forEach(item -> {
  124. //如果有公开号,则将公开号作为专利号
  125. if (item.getPublicNo() != null && !item.getPublicNo().equals("")) {
  126. item.setPatentNo(item.getPublicNo());
  127. //如果没有公开号,但是有公告号,则将公告号作为公开号和专利号
  128. } else if (item.getAnnounceNo() != null && !item.getAnnounceNo().equals("")) {
  129. item.setPublicNo(item.getAnnounceNo());
  130. item.setPatentNo(item.getAnnounceNo());
  131. }
  132. else {
  133. System.out.println("");
  134. }
  135. //陈宇 ↓ 如果没有公开日就将公告日作为公开日
  136. if (item.getPublicDate() == null || item.getPublicDate().equals("")) {
  137. item.setPublicDate(item.getPublicAccreditDate());
  138. }
  139. item.setApplicant(new ArrayList<>());
  140. item.setAgent(new ArrayList<>());
  141. item.setIpcList(Arrays.asList(item.getIpcListStr().split(";")));
  142. List<String> applicants = Arrays.asList(item.getApplicantStr().split(";"));
  143. //装载申请人
  144. applicants.forEach(
  145. tem -> {
  146. PatentApplicant patentApplicant = new PatentApplicant();
  147. patentApplicant.setType(2);
  148. patentApplicant.setDataType(2);
  149. patentApplicant.setName(tem);
  150. item.getApplicant().add(patentApplicant);
  151. }
  152. );
  153. if (item.getCurrentApplicantStr() != null && !item.getCurrentApplicantStr().equals("")) {
  154. List<String> cApplicants = Arrays.asList(item.getCurrentApplicantStr().split(";"));
  155. cApplicants.forEach(
  156. tem -> {
  157. PatentApplicant patentApplicant = new PatentApplicant();
  158. patentApplicant.setType(2);
  159. patentApplicant.setDataType(1);
  160. patentApplicant.setName(tem);
  161. item.getApplicant().add(patentApplicant);
  162. }
  163. );
  164. }
  165. //代理机构
  166. if (item.getAgencyStr() != null && !item.getAgencyStr().equals("")) {
  167. PatentAgency patentAgency = new PatentAgency();
  168. patentAgency.setName(item.getAgencyStr().split(" ")[0]);
  169. item.setAgency(patentAgency);
  170. }
  171. //发明人
  172. if (item.getInventorStr() != null && !item.getInventorStr().equals("")) {
  173. item.setInventor(new ArrayList<>());
  174. List<String> inventors = Arrays.asList(item.getInventorStr().split(";"));
  175. inventors.forEach(
  176. tem -> {
  177. PatentInventor patentInventor = new PatentInventor();
  178. patentInventor.setName(tem);
  179. item.getInventor().add(patentInventor);
  180. ;
  181. }
  182. );
  183. }
  184. //代理人
  185. if (item.getAgentStr() != null && !item.getAgentStr().equals("")) {
  186. List<String> agent = Arrays.asList(item.getAgentStr().split(";"));
  187. agent.forEach(
  188. tem -> {
  189. PatentAgent patentAgent = new PatentAgent();
  190. patentAgent.setName(tem);
  191. item.getAgent().add(patentAgent);
  192. }
  193. );
  194. }
  195. //附图
  196. String apN = item.getApplicationNo().replace(".", "");
  197. item.setAbstractPath(this.getPictureApi(apN.substring(2)));
  198. if (item.getLG() != null) {
  199. switch (item.getLG()) {
  200. case 1:
  201. item.setSimpleStatus("有效");
  202. break;
  203. case 2:
  204. item.setSimpleStatus("失效");
  205. break;
  206. case 3:
  207. item.setSimpleStatus("审中");
  208. break;
  209. }
  210. }
  211. //法律状态
  212. });
  213. }
  214. public Map<String, Object> patentStarSearchLocal(PatentStarListDto patentStarListDto) throws IOException {
  215. RetrieveRecord retrieveRecord = new RetrieveRecord();
  216. retrieveRecord.setConditions(patentStarListDto.getCurrentQuery());
  217. if (patentStarListDto.getRetrieveRecordId() != null) {
  218. //retrieveRecord = retrieveRecordService.getById(patentStarListDto.getRetrieveRecordId());
  219. //patentStarListDto.setCurrentQuery(retrieveRecord.getConditions());
  220. //patentStarListDto.setDBType(retrieveRecord.getDbType());
  221. }
  222. Map<String, Object> map = this.patentStarSearchApi(patentStarListDto);
  223. //记录检索历史
  224. retrieveRecord.setRetrieveTime(new Date());
  225. retrieveRecord.setTotalNum(Integer.parseInt(map.get("total").toString()));
  226. retrieveRecord.setDbType(patentStarListDto.getDBType());
  227. if (patentStarListDto.getRetrieveRecordId() == null) {
  228. //获取创建人信息
  229. PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
  230. retrieveRecord.setCreateTime(new Date());
  231. retrieveRecord.setCreateId(personnelVO.getId());
  232. retrieveRecord.setTenantId(personnelVO.getTenantId());
  233. retrieveRecord.insert();
  234. }
  235. // else {
  236. // retrieveRecord.updateById();
  237. // }
  238. map.put("retrieveRecordId", retrieveRecord.getId());
  239. return map;
  240. }
  241. public Map<String, Object> patentStarSearchApi(PatentStarListDto patentStarListDto) throws IOException {
  242. try {
  243. String formQuery = patentStarListDto.getCurrentQuery();
  244. patentStarListDto.setCurrentQuery(PatentStarApiService.formatQuery(formQuery));
  245. } catch (Exception e) {
  246. return null;
  247. }
  248. PatentStarDto patentStarDto = new PatentStarDto();
  249. BeanUtils.copyProperties(patentStarListDto, patentStarDto);
  250. String json = JSONObject.toJSONString(patentStarDto);
  251. String url = "http://s.patentstar.com.cn/SearchAPI/PatentSearch/ResultGet";
  252. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  253. String Sign = "FNYJD7902206FFB741E163BE6536C3689D55" + currentTimeMillis.toString();
  254. String signMd5 = FormatUtil.MD5(Sign);
  255. // 创建一个OkHttpClient对象
  256. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  257. .connectTimeout(60, TimeUnit.SECONDS)
  258. .writeTimeout(60, TimeUnit.SECONDS)
  259. .readTimeout(60, TimeUnit.SECONDS)
  260. .build();
  261. // 创建一个RequestBody(参数1:数据类型 参数2传递的json串)
  262. FormBody.Builder builder = new FormBody.Builder();
  263. builder.add("AppID", "K8FFB741E163BE6536");
  264. builder.add("Stamp", currentTimeMillis.toString());
  265. builder.add("Sign", signMd5);
  266. builder.add("QueryJson", json);
  267. FormBody requestBody = builder.build();
  268. // 创建一个请求对象
  269. Request request = new Request.Builder().url(url).post(requestBody).build();
  270. // 发送请求获取响应
  271. try {
  272. Response response = okHttpClient.newCall(request).execute();
  273. // 判断请求是否成功
  274. if (response.isSuccessful()) {
  275. JSONObject jsonObject = JSONObject.parseObject(Objects.requireNonNull(response.body()).string());
  276. if (jsonObject.get("Ret").equals(500)) {
  277. return null;
  278. }
  279. JSONObject Data = (JSONObject) jsonObject.get("Data");
  280. List<StarPatentVO> starPatentVOS = JSONArray.parseArray(Data.get("List").toString(), StarPatentVO.class);
  281. this.loadStarPatentVOS(starPatentVOS,Data);
  282. // 打印服务端返回结果
  283. // return Objects.requireNonNull(response.body()).string();
  284. Map<String, Object> reMap = new HashMap<>();
  285. reMap.put("size", patentStarListDto.getRowCount());
  286. reMap.put("current", patentStarListDto.getPageNum());
  287. reMap.put("records", starPatentVOS);
  288. reMap.put("total", Data.get("HitCount"));
  289. return reMap;
  290. }
  291. } catch (IOException e) {
  292. e.printStackTrace();
  293. return null;
  294. }
  295. return null;
  296. }
  297. /**
  298. * @param appNo
  299. * @return
  300. * @throws IOException
  301. * @author 李仁杰
  302. * 从专利之星获取中国专利著录
  303. */
  304. public String getCnBibApi(String appNo) {
  305. String url = "https://api.patentstar.com.cn/api/Patent/CnBibo/" + appNo;
  306. String appId = "2000041";
  307. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  308. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  309. String Sign = appId + appkey + currentTimeMillis.toString();
  310. String signMd5 = FormatUtil.MD5(Sign);
  311. // 创建一个OkHttpClient对象
  312. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  313. .connectTimeout(60, TimeUnit.SECONDS)
  314. .writeTimeout(60, TimeUnit.SECONDS)
  315. .readTimeout(60, TimeUnit.SECONDS)
  316. .build();
  317. // 创建一个请求对象
  318. Request request = new Request.Builder().url(url)
  319. .addHeader("_appid", "2000041")
  320. .addHeader("_timestamp", currentTimeMillis.toString())
  321. .addHeader("_sign", signMd5)
  322. .get().build();
  323. // 发送请求获取响应
  324. try {
  325. Response response = okHttpClient.newCall(request).execute();
  326. // 判断请求是否成功
  327. if (response.isSuccessful()) {
  328. response.body().toString();
  329. // 打印服务端返回结果
  330. return Objects.requireNonNull(response.body()).string();
  331. }
  332. } catch (IOException e) {
  333. e.printStackTrace();
  334. }
  335. return "{}";
  336. }
  337. /**
  338. * @param
  339. * @return
  340. * @throws IOException
  341. * @author 李仁杰
  342. * 从专利之星获取中国专利摘要附图
  343. */
  344. public String getPictureApi(String appNo) {
  345. String url = "https://api.patentstar.com.cn/api/Patent/CnMainImage/" + appNo;
  346. String appId = "2000041";
  347. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  348. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  349. String Sign = appId + appkey + currentTimeMillis.toString();
  350. String signMd5 = FormatUtil.MD5(Sign);
  351. // 创建一个OkHttpClient对象
  352. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  353. .connectTimeout(60, TimeUnit.SECONDS)
  354. .writeTimeout(60, TimeUnit.SECONDS)
  355. .readTimeout(60, TimeUnit.SECONDS)
  356. .build();
  357. // 创建一个请求对象
  358. Request request = new Request.Builder().url(url)
  359. .addHeader("_appid", "2000041")
  360. .addHeader("_timestamp", currentTimeMillis.toString())
  361. .addHeader("_sign", signMd5)
  362. .get().build();
  363. // 发送请求获取响应
  364. try {
  365. Response response = okHttpClient.newCall(request).execute();
  366. // 判断请求是否成功
  367. if (response.isSuccessful()) {
  368. response.body().toString();
  369. // 打印服务端返回结果
  370. return Objects.requireNonNull(response.body()).string();
  371. }
  372. } catch (IOException e) {
  373. e.printStackTrace();
  374. }
  375. return "{}";
  376. }
  377. /**
  378. * @param appNo
  379. * @return
  380. * @throws IOException
  381. * @author 李仁杰
  382. * 从专利之星获取中国专利外观图
  383. */
  384. public String getWGPictureApi(String appNo) throws IOException {
  385. String url = "https://api.patentstar.com.cn/api/Patent/CnWGImage/" + appNo;
  386. String appId = "2000041";
  387. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  388. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  389. String Sign = appId + appkey + currentTimeMillis.toString();
  390. String signMd5 = FormatUtil.MD5(Sign);
  391. // 创建一个OkHttpClient对象
  392. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  393. .connectTimeout(60, TimeUnit.SECONDS)
  394. .writeTimeout(60, TimeUnit.SECONDS)
  395. .readTimeout(60, TimeUnit.SECONDS)
  396. .build();
  397. // 创建一个请求对象
  398. Request request = new Request.Builder().url(url)
  399. .addHeader("_appid", "2000041")
  400. .addHeader("_timestamp", currentTimeMillis.toString())
  401. .addHeader("_sign", signMd5)
  402. .get().build();
  403. // 发送请求获取响应
  404. try {
  405. Response response = okHttpClient.newCall(request).execute();
  406. // 判断请求是否成功
  407. if (response.isSuccessful()) {
  408. response.body().toString();
  409. // 打印服务端返回结果
  410. return Objects.requireNonNull(response.body()).string();
  411. }
  412. } catch (IOException e) {
  413. e.printStackTrace();
  414. }
  415. return "{}";
  416. }
  417. /**
  418. * @param appNo
  419. * @return
  420. * @throws IOException
  421. * @author 李仁杰
  422. * 从专利之星获取中国专利法律状态
  423. */
  424. public String getCnLegalApi(String appNo) {
  425. String url = "https://api.patentstar.com.cn/api/Patent/CnLegal/" + appNo;
  426. String appId = "2000041";
  427. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  428. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  429. String Sign = appId + appkey + currentTimeMillis.toString();
  430. String signMd5 = FormatUtil.MD5(Sign);
  431. // 创建一个OkHttpClient对象
  432. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  433. .connectTimeout(60, TimeUnit.SECONDS)
  434. .writeTimeout(60, TimeUnit.SECONDS)
  435. .readTimeout(60, TimeUnit.SECONDS)
  436. .build();
  437. // 创建一个请求对象
  438. Request request = new Request.Builder().url(url)
  439. .addHeader("_appid", "2000041")
  440. .addHeader("_timestamp", currentTimeMillis.toString())
  441. .addHeader("_sign", signMd5)
  442. .get().build();
  443. // 发送请求获取响应
  444. try {
  445. Response response = okHttpClient.newCall(request).execute();
  446. // 判断请求是否成功
  447. if (response.isSuccessful()) {
  448. response.body().toString();
  449. // 打印服务端返回结果
  450. return Objects.requireNonNull(response.body()).string();
  451. }
  452. } catch (IOException e) {
  453. e.printStackTrace();
  454. }
  455. return "{}";
  456. }
  457. /**
  458. * @param appNo
  459. * @return
  460. * @throws IOException
  461. * @author 李仁杰
  462. * 从专利之星获取中国专利全文图片
  463. */
  464. public String getCnPdfApi(String appNo) throws IOException {
  465. String url = "https://api.patentstar.com.cn/api/Patent/CnPdf/" + appNo;
  466. String appId = "2000041";
  467. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  468. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  469. String Sign = appId + appkey + currentTimeMillis.toString();
  470. String signMd5 = FormatUtil.MD5(Sign);
  471. // 创建一个OkHttpClient对象
  472. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  473. .connectTimeout(60, TimeUnit.SECONDS)
  474. .writeTimeout(60, TimeUnit.SECONDS)
  475. .readTimeout(60, TimeUnit.SECONDS)
  476. .build();
  477. // 创建一个请求对象
  478. Request request = new Request.Builder().url(url)
  479. .addHeader("_appid", "2000041")
  480. .addHeader("_timestamp", currentTimeMillis.toString())
  481. .addHeader("_sign", signMd5)
  482. .get().build();
  483. // 发送请求获取响应
  484. try {
  485. Response response = okHttpClient.newCall(request).execute();
  486. // 判断请求是否成功
  487. if (response.isSuccessful()) {
  488. response.body().toString();
  489. // 打印服务端返回结果
  490. return Objects.requireNonNull(response.body()).string();
  491. }
  492. } catch (IOException e) {
  493. e.printStackTrace();
  494. }
  495. return "{}";
  496. }
  497. /**
  498. * @param appNo
  499. * @return
  500. * @throws IOException
  501. * @author 李仁杰
  502. * 从专利之星获取中国专利全文文本
  503. */
  504. public String getCnFullXmlApi(String appNo) throws IOException {
  505. String url = "https://api.patentstar.com.cn/api/Patent/CnFullXml/" + appNo;
  506. String appId = "2000041";
  507. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  508. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  509. String Sign = appId + appkey + currentTimeMillis.toString();
  510. String signMd5 = FormatUtil.MD5(Sign);
  511. // 创建一个OkHttpClient对象
  512. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  513. .connectTimeout(60, TimeUnit.SECONDS)
  514. .writeTimeout(60, TimeUnit.SECONDS)
  515. .readTimeout(60, TimeUnit.SECONDS)
  516. .build();
  517. // 创建一个请求对象
  518. Request request = new Request.Builder().url(url)
  519. .addHeader("_appid", "2000041")
  520. .addHeader("_timestamp", currentTimeMillis.toString())
  521. .addHeader("_sign", signMd5)
  522. .get().build();
  523. // 发送请求获取响应
  524. try {
  525. Response response = okHttpClient.newCall(request).execute();
  526. // 判断请求是否成功
  527. if (response.isSuccessful()) {
  528. response.body().toString();
  529. // 打印服务端返回结果
  530. return Objects.requireNonNull(response.body()).string();
  531. }
  532. } catch (IOException e) {
  533. e.printStackTrace();
  534. }
  535. return "{}";
  536. }
  537. /**
  538. * @param patentNo
  539. * @return
  540. * @throws IOException
  541. * @author 李仁杰
  542. * 从专利之星获取世界专利pdf
  543. */
  544. public String getEnPdfApi(String patentNo) {
  545. String url = " https://api.patentstar.com.cn/api/Patent/EnPdf/" + patentNo;
  546. String appId = "2000041";
  547. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  548. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  549. String Sign = appId + appkey + currentTimeMillis.toString();
  550. String signMd5 = FormatUtil.MD5(Sign);
  551. // 创建一个OkHttpClient对象
  552. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  553. .connectTimeout(60, TimeUnit.SECONDS)
  554. .writeTimeout(60, TimeUnit.SECONDS)
  555. .readTimeout(60, TimeUnit.SECONDS)
  556. .build();
  557. // 创建一个请求对象
  558. Request request = new Request.Builder().url(url)
  559. .addHeader("_appid", "2000041")
  560. .addHeader("_timestamp", currentTimeMillis.toString())
  561. .addHeader("_sign", signMd5)
  562. .get().build();
  563. // 发送请求获取响应
  564. try {
  565. Response response = okHttpClient.newCall(request).execute();
  566. // 判断请求是否成功
  567. if (response.isSuccessful()) {
  568. response.body().toString();
  569. // 打印服务端返回结果
  570. return Objects.requireNonNull(response.body()).string();
  571. }
  572. } catch (IOException e) {
  573. e.printStackTrace();
  574. }
  575. return "{}";
  576. }
  577. /**
  578. * @param patentNo
  579. * @return
  580. * @throws IOException
  581. * @author 李仁杰
  582. * 从专利之星获取世界专利著录信息
  583. */
  584. public String getENBibApi(String patentNo) {
  585. String url = "https://api.patentstar.com.cn/api/Patent/ENBib/" + patentNo;
  586. String appId = "2000041";
  587. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  588. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  589. String Sign = appId + appkey + currentTimeMillis.toString();
  590. String signMd5 = FormatUtil.MD5(Sign);
  591. // 创建一个OkHttpClient对象
  592. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  593. .connectTimeout(60, TimeUnit.SECONDS)
  594. .writeTimeout(60, TimeUnit.SECONDS)
  595. .readTimeout(60, TimeUnit.SECONDS)
  596. .build();
  597. // 创建一个请求对象
  598. Request request = new Request.Builder().url(url)
  599. .addHeader("_appid", "2000041")
  600. .addHeader("_timestamp", currentTimeMillis.toString())
  601. .addHeader("_sign", signMd5)
  602. .get().build();
  603. // 发送请求获取响应
  604. try {
  605. Response response = okHttpClient.newCall(request).execute();
  606. // 判断请求是否成功
  607. if (response.isSuccessful()) {
  608. response.body().toString();
  609. // 打印服务端返回结果
  610. return Objects.requireNonNull(response.body()).string();
  611. }
  612. } catch (IOException e) {
  613. e.printStackTrace();
  614. }
  615. return "{}";
  616. }
  617. /**
  618. * @param patentNo
  619. * @return
  620. * @throws IOException
  621. * @author 李仁杰
  622. * 从专利之星获取同族专利
  623. */
  624. public String getFamilyByPubNoApi(String patentNo) {
  625. String url = "https://api.patentstar.com.cn/api/Patent/FamilyByPubNo/" + patentNo;
  626. String appId = "2000041";
  627. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  628. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  629. String Sign = appId + appkey + currentTimeMillis.toString();
  630. String signMd5 = FormatUtil.MD5(Sign);
  631. // 创建一个OkHttpClient对象
  632. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  633. .connectTimeout(60, TimeUnit.SECONDS)
  634. .writeTimeout(60, TimeUnit.SECONDS)
  635. .readTimeout(60, TimeUnit.SECONDS)
  636. .build();
  637. // 创建一个请求对象
  638. Request request = new Request.Builder().url(url)
  639. .addHeader("_appid", "2000041")
  640. .addHeader("_timestamp", currentTimeMillis.toString())
  641. .addHeader("_sign", signMd5)
  642. .get().build();
  643. // 发送请求获取响应
  644. try {
  645. Response response = okHttpClient.newCall(request).execute();
  646. // 判断请求是否成功
  647. if (response.isSuccessful()) {
  648. response.body().toString();
  649. // 打印服务端返回结果
  650. return Objects.requireNonNull(response.body()).string();
  651. }
  652. } catch (IOException e) {
  653. e.printStackTrace();
  654. }
  655. return "{}";
  656. }
  657. /**
  658. * @param patentNo
  659. * @return
  660. * @throws IOException
  661. * @author 李仁杰
  662. * 获得专利被引用次数api
  663. */
  664. public String getCitedNumByPubNoApi(String patentNo) throws IOException {
  665. String url = "https://api.patentstar.com.cn/api/Patent/CitedNumByPubNo/" + patentNo;
  666. String appId = "2000041";
  667. String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
  668. Long currentTimeMillis = System.currentTimeMillis() / 1000;
  669. String Sign = appId + appkey + currentTimeMillis.toString();
  670. String signMd5 = FormatUtil.MD5(Sign);
  671. // 创建一个OkHttpClient对象
  672. OkHttpClient okHttpClient = new OkHttpClient.Builder()
  673. .connectTimeout(60, TimeUnit.SECONDS)
  674. .writeTimeout(60, TimeUnit.SECONDS)
  675. .readTimeout(60, TimeUnit.SECONDS)
  676. .build();
  677. // 创建一个请求对象
  678. Request request = new Request.Builder().url(url)
  679. .addHeader("_appid", "2000041")
  680. .addHeader("_timestamp", currentTimeMillis.toString())
  681. .addHeader("_sign", signMd5)
  682. .get().build();
  683. // 发送请求获取响应
  684. try {
  685. Response response = okHttpClient.newCall(request).execute();
  686. // 判断请求是否成功
  687. if (response.isSuccessful()) {
  688. response.body().toString();
  689. // 打印服务端返回结果
  690. return Objects.requireNonNull(response.body()).string();
  691. }
  692. } catch (IOException e) {
  693. e.printStackTrace();
  694. }
  695. return "{}";
  696. }
  697. }