|
@@ -0,0 +1,452 @@
|
|
|
+package cn.cslg.pas.service.outApi;
|
|
|
+
|
|
|
+import cn.cslg.pas.common.model.PatentCell;
|
|
|
+import cn.cslg.pas.common.model.dto.GetClaimsInfoParamsDTO;
|
|
|
+import cn.cslg.pas.common.model.dto.GetDescriptionInfoParamsDTO;
|
|
|
+import cn.cslg.pas.common.model.dto.GetFuTuParamsDTO;
|
|
|
+import cn.cslg.pas.common.model.dto.GetSearchBiblioParamsDTO;
|
|
|
+import cn.cslg.pas.common.model.outApi.PatentStarListDto;
|
|
|
+import cn.cslg.pas.common.utils.FormatUtil;
|
|
|
+import cn.cslg.pas.common.utils.JsonUtils;
|
|
|
+import cn.cslg.pas.common.utils.SecurityUtils.SecurityUtils;
|
|
|
+import cn.cslg.pas.domain.PubNo;
|
|
|
+import cn.hutool.crypto.SecureUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.google.gson.Gson;
|
|
|
+import com.google.gson.JsonObject;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import okhttp3.*;
|
|
|
+import org.apache.commons.lang3.StringEscapeUtils;
|
|
|
+import org.junit.Test;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 调用外部接口的Service类 PCS:权限系统
|
|
|
+ *
|
|
|
+ * @Author chenyu
|
|
|
+ * @Date 2023/4/25
|
|
|
+ */
|
|
|
+@RequiredArgsConstructor
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+
|
|
|
+public class PatentStarApiService {
|
|
|
+ @Value("${authorUrl}")
|
|
|
+ private String PCSUrl;
|
|
|
+ @Value("${OPSUrl}")
|
|
|
+ private String OPSUrl;
|
|
|
+ @Value("${PASUrl}")
|
|
|
+ private String PASUrl;
|
|
|
+
|
|
|
+ public String patentStarSearchApi(PatentStarListDto patentStarListDto) throws IOException {
|
|
|
+ String json = JSONObject.toJSONString(patentStarListDto);
|
|
|
+ String url = "http://s.patentstar.com.cn/SearchAPI/PatentSearch/ResultGet";
|
|
|
+ Long currentTimeMillis = System.currentTimeMillis() / 1000;
|
|
|
+ String Sign = "FNYJD7902206FFB741E163BE6536C3689D55" + currentTimeMillis.toString();
|
|
|
+ String signMd5 = FormatUtil.MD5(Sign);
|
|
|
+ // 创建一个OkHttpClient对象
|
|
|
+ OkHttpClient okHttpClient = new OkHttpClient();
|
|
|
+ // 创建一个RequestBody(参数1:数据类型 参数2传递的json串)
|
|
|
+ FormBody.Builder builder = new FormBody.Builder();
|
|
|
+ builder.add("AppID", "K8FFB741E163BE6536");
|
|
|
+ builder.add("Stamp", currentTimeMillis.toString());
|
|
|
+ builder.add("Sign", signMd5);
|
|
|
+ builder.add("QueryJson", json);
|
|
|
+ FormBody requestBody = builder.build();
|
|
|
+ // 创建一个请求对象
|
|
|
+ Request request = new Request.Builder().url(url).post(requestBody).build();
|
|
|
+ // 发送请求获取响应
|
|
|
+ try {
|
|
|
+ Response response = okHttpClient.newCall(request).execute();
|
|
|
+ // 判断请求是否成功
|
|
|
+ if (response.isSuccessful()) {
|
|
|
+// JSONObject jsonObject =JSONObject.parseObject(Objects.requireNonNull(response.body()).string());
|
|
|
+// JSONObject jsonObject1= (JSONObject)jsonObject.get("Data");
|
|
|
+ // 打印服务端返回结果
|
|
|
+ return Objects.requireNonNull(response.body()).string();
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return "{}";
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * @param appNo
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ * @author 李仁杰
|
|
|
+ * 从专利之星获取摘要附图
|
|
|
+ */
|
|
|
+ public String getCnBibApi(String appNo) throws IOException {
|
|
|
+ String url = "https://api.patentstar.com.cn/api/Patent/CnBibo/" + appNo;
|
|
|
+ String appId = "2000041";
|
|
|
+ String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
|
|
|
+ Long currentTimeMillis = System.currentTimeMillis() / 1000;
|
|
|
+ String Sign = appId + appkey + currentTimeMillis.toString();
|
|
|
+ String signMd5 = FormatUtil.MD5(Sign);
|
|
|
+ // 创建一个OkHttpClient对象
|
|
|
+ OkHttpClient okHttpClient = new OkHttpClient();
|
|
|
+ // 创建一个请求对象
|
|
|
+ Request request = new Request.Builder().url(url)
|
|
|
+ .addHeader("_appid", "2000041")
|
|
|
+ .addHeader("_timestamp", currentTimeMillis.toString())
|
|
|
+ .addHeader("_sign", signMd5)
|
|
|
+ .get().build();
|
|
|
+ // 发送请求获取响应
|
|
|
+ try {
|
|
|
+ Response response = okHttpClient.newCall(request).execute();
|
|
|
+ // 判断请求是否成功
|
|
|
+ if (response.isSuccessful()) {
|
|
|
+ response.body().toString();
|
|
|
+ // 打印服务端返回结果
|
|
|
+ return Objects.requireNonNull(response.body()).string();
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return "{}";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param patentNo
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ * @author 李仁杰
|
|
|
+ * 从专利之星获取摘要附图
|
|
|
+ */
|
|
|
+ public String getPictureApi(String patentNo) throws IOException {
|
|
|
+ String url = "https://api.patentstar.com.cn/api/Patent/CnMainImage/" + patentNo;
|
|
|
+ String appId = "2000041";
|
|
|
+ String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
|
|
|
+ Long currentTimeMillis = System.currentTimeMillis() / 1000;
|
|
|
+ String Sign = appId + appkey + currentTimeMillis.toString();
|
|
|
+ String signMd5 = FormatUtil.MD5(Sign);
|
|
|
+ // 创建一个OkHttpClient对象
|
|
|
+ OkHttpClient okHttpClient = new OkHttpClient();
|
|
|
+ // 创建一个请求对象
|
|
|
+ Request request = new Request.Builder().url(url)
|
|
|
+ .addHeader("_appid", "2000041")
|
|
|
+ .addHeader("_timestamp", currentTimeMillis.toString())
|
|
|
+ .addHeader("_sign", signMd5)
|
|
|
+ .get().build();
|
|
|
+ // 发送请求获取响应
|
|
|
+ try {
|
|
|
+ Response response = okHttpClient.newCall(request).execute();
|
|
|
+ // 判断请求是否成功
|
|
|
+ if (response.isSuccessful()) {
|
|
|
+ response.body().toString();
|
|
|
+ // 打印服务端返回结果
|
|
|
+ return Objects.requireNonNull(response.body()).string();
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return "{}";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param appNo
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ * @author 李仁杰
|
|
|
+ * 从专利之星获取中国专利外观图
|
|
|
+ */
|
|
|
+ public String getWGPictureApi(String appNo) throws IOException {
|
|
|
+
|
|
|
+ String url = "https://api.patentstar.com.cn/api/Patent/CnWGImage/" + appNo;
|
|
|
+ String appId = "2000041";
|
|
|
+ String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
|
|
|
+ Long currentTimeMillis = System.currentTimeMillis() / 1000;
|
|
|
+ String Sign = appId + appkey + currentTimeMillis.toString();
|
|
|
+ String signMd5 = FormatUtil.MD5(Sign);
|
|
|
+ // 创建一个OkHttpClient对象
|
|
|
+ OkHttpClient okHttpClient = new OkHttpClient();
|
|
|
+ // 创建一个请求对象
|
|
|
+ Request request = new Request.Builder().url(url)
|
|
|
+ .addHeader("_appid", "2000041")
|
|
|
+ .addHeader("_timestamp", currentTimeMillis.toString())
|
|
|
+ .addHeader("_sign", signMd5)
|
|
|
+ .get().build();
|
|
|
+ // 发送请求获取响应
|
|
|
+ try {
|
|
|
+ Response response = okHttpClient.newCall(request).execute();
|
|
|
+ // 判断请求是否成功
|
|
|
+ if (response.isSuccessful()) {
|
|
|
+ response.body().toString();
|
|
|
+ // 打印服务端返回结果
|
|
|
+ return Objects.requireNonNull(response.body()).string();
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return "{}";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param appNo
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ * @author 李仁杰
|
|
|
+ * 从专利之星获取中国专利法律状态
|
|
|
+ */
|
|
|
+ public String getCnLegalApi(String appNo) throws IOException {
|
|
|
+ String url = "https://api.patentstar.com.cn/api/Patent/CnLegal/"+appNo;
|
|
|
+ String appId = "2000041";
|
|
|
+ String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
|
|
|
+ Long currentTimeMillis = System.currentTimeMillis() / 1000;
|
|
|
+ String Sign = appId + appkey + currentTimeMillis.toString();
|
|
|
+ String signMd5 = FormatUtil.MD5(Sign);
|
|
|
+ // 创建一个OkHttpClient对象
|
|
|
+ OkHttpClient okHttpClient = new OkHttpClient();
|
|
|
+ // 创建一个请求对象
|
|
|
+ Request request = new Request.Builder().url(url)
|
|
|
+ .addHeader("_appid", "2000041")
|
|
|
+ .addHeader("_timestamp", currentTimeMillis.toString())
|
|
|
+ .addHeader("_sign", signMd5)
|
|
|
+ .get().build();
|
|
|
+ // 发送请求获取响应
|
|
|
+ try {
|
|
|
+ Response response = okHttpClient.newCall(request).execute();
|
|
|
+ // 判断请求是否成功
|
|
|
+ if (response.isSuccessful()) {
|
|
|
+ response.body().toString();
|
|
|
+ // 打印服务端返回结果
|
|
|
+ return Objects.requireNonNull(response.body()).string();
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return "{}";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param appNo
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ * @author 李仁杰
|
|
|
+ * 从专利之星获取中国专利全文图片
|
|
|
+ */
|
|
|
+
|
|
|
+ public String getCnPdfApi(String appNo) throws IOException {
|
|
|
+ String url = "https://api.patentstar.com.cn/api/Patent/CnPdf/"+appNo;
|
|
|
+ String appId = "2000041";
|
|
|
+ String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
|
|
|
+ Long currentTimeMillis = System.currentTimeMillis() / 1000;
|
|
|
+ String Sign = appId + appkey + currentTimeMillis.toString();
|
|
|
+ String signMd5 = FormatUtil.MD5(Sign);
|
|
|
+ // 创建一个OkHttpClient对象
|
|
|
+ OkHttpClient okHttpClient = new OkHttpClient();
|
|
|
+ // 创建一个请求对象
|
|
|
+ Request request = new Request.Builder().url(url)
|
|
|
+ .addHeader("_appid", "2000041")
|
|
|
+ .addHeader("_timestamp", currentTimeMillis.toString())
|
|
|
+ .addHeader("_sign", signMd5)
|
|
|
+ .get().build();
|
|
|
+ // 发送请求获取响应
|
|
|
+ try {
|
|
|
+ Response response = okHttpClient.newCall(request).execute();
|
|
|
+ // 判断请求是否成功
|
|
|
+ if (response.isSuccessful()) {
|
|
|
+ response.body().toString();
|
|
|
+ // 打印服务端返回结果
|
|
|
+ return Objects.requireNonNull(response.body()).string();
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return "{}";
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * @param appNo
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ * @author 李仁杰
|
|
|
+ * 从专利之星获取中国专利全文文本
|
|
|
+ */
|
|
|
+
|
|
|
+ public String getCnFullXmlApi(String appNo) throws IOException {
|
|
|
+ String url = "https://api.patentstar.com.cn/api/Patent/CnFullXml/"+appNo;
|
|
|
+ String appId = "2000041";
|
|
|
+ String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
|
|
|
+ Long currentTimeMillis = System.currentTimeMillis() / 1000;
|
|
|
+ String Sign = appId + appkey + currentTimeMillis.toString();
|
|
|
+ String signMd5 = FormatUtil.MD5(Sign);
|
|
|
+ // 创建一个OkHttpClient对象
|
|
|
+ OkHttpClient okHttpClient = new OkHttpClient();
|
|
|
+ // 创建一个请求对象
|
|
|
+ Request request = new Request.Builder().url(url)
|
|
|
+ .addHeader("_appid", "2000041")
|
|
|
+ .addHeader("_timestamp", currentTimeMillis.toString())
|
|
|
+ .addHeader("_sign", signMd5)
|
|
|
+ .get().build();
|
|
|
+ // 发送请求获取响应
|
|
|
+ try {
|
|
|
+ Response response = okHttpClient.newCall(request).execute();
|
|
|
+ // 判断请求是否成功
|
|
|
+ if (response.isSuccessful()) {
|
|
|
+ response.body().toString();
|
|
|
+ // 打印服务端返回结果
|
|
|
+ return Objects.requireNonNull(response.body()).string();
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return "{}";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param patentNo
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ * @author 李仁杰
|
|
|
+ * 从专利之星获取世界专利pdf
|
|
|
+ */
|
|
|
+ public String getEnPdfApi(String patentNo) throws IOException {
|
|
|
+ String url = " https://api.patentstar.com.cn/api/Patent/EnPdf/"+patentNo;
|
|
|
+ String appId = "2000041";
|
|
|
+ String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
|
|
|
+ Long currentTimeMillis = System.currentTimeMillis() / 1000;
|
|
|
+ String Sign = appId + appkey + currentTimeMillis.toString();
|
|
|
+ String signMd5 = FormatUtil.MD5(Sign);
|
|
|
+ // 创建一个OkHttpClient对象
|
|
|
+ OkHttpClient okHttpClient = new OkHttpClient();
|
|
|
+ // 创建一个请求对象
|
|
|
+ Request request = new Request.Builder().url(url)
|
|
|
+ .addHeader("_appid", "2000041")
|
|
|
+ .addHeader("_timestamp", currentTimeMillis.toString())
|
|
|
+ .addHeader("_sign", signMd5)
|
|
|
+ .get().build();
|
|
|
+ // 发送请求获取响应
|
|
|
+ try {
|
|
|
+ Response response = okHttpClient.newCall(request).execute();
|
|
|
+ // 判断请求是否成功
|
|
|
+ if (response.isSuccessful()) {
|
|
|
+ response.body().toString();
|
|
|
+ // 打印服务端返回结果
|
|
|
+ return Objects.requireNonNull(response.body()).string();
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return "{}";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param patentNo
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ * @author 李仁杰
|
|
|
+ * 从专利之星获取世界专利著录信息
|
|
|
+ */
|
|
|
+ public String getENBibApi(String patentNo) throws IOException {
|
|
|
+ String url = "https://api.patentstar.com.cn/api/Patent/ENBib/"+patentNo;
|
|
|
+ String appId = "2000041";
|
|
|
+ String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
|
|
|
+ Long currentTimeMillis = System.currentTimeMillis() / 1000;
|
|
|
+ String Sign = appId + appkey + currentTimeMillis.toString();
|
|
|
+ String signMd5 = FormatUtil.MD5(Sign);
|
|
|
+ // 创建一个OkHttpClient对象
|
|
|
+ OkHttpClient okHttpClient = new OkHttpClient();
|
|
|
+ // 创建一个请求对象
|
|
|
+ Request request = new Request.Builder().url(url)
|
|
|
+ .addHeader("_appid", "2000041")
|
|
|
+ .addHeader("_timestamp", currentTimeMillis.toString())
|
|
|
+ .addHeader("_sign", signMd5)
|
|
|
+ .get().build();
|
|
|
+ // 发送请求获取响应
|
|
|
+ try {
|
|
|
+ Response response = okHttpClient.newCall(request).execute();
|
|
|
+ // 判断请求是否成功
|
|
|
+ if (response.isSuccessful()) {
|
|
|
+ response.body().toString();
|
|
|
+ // 打印服务端返回结果
|
|
|
+ return Objects.requireNonNull(response.body()).string();
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return "{}";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param patentNo
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ * @author 李仁杰
|
|
|
+ * 从专利之星获取同族专利
|
|
|
+ */
|
|
|
+ public String getFamilyByPubNoApi(String patentNo) throws IOException {
|
|
|
+ String url = "https://api.patentstar.com.cn/api/Patent/FamilyByPubNo/"+patentNo;
|
|
|
+ String appId = "2000041";
|
|
|
+ String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
|
|
|
+ Long currentTimeMillis = System.currentTimeMillis() / 1000;
|
|
|
+ String Sign = appId + appkey + currentTimeMillis.toString();
|
|
|
+ String signMd5 = FormatUtil.MD5(Sign);
|
|
|
+ // 创建一个OkHttpClient对象
|
|
|
+ OkHttpClient okHttpClient = new OkHttpClient();
|
|
|
+ // 创建一个请求对象
|
|
|
+ Request request = new Request.Builder().url(url)
|
|
|
+ .addHeader("_appid", "2000041")
|
|
|
+ .addHeader("_timestamp", currentTimeMillis.toString())
|
|
|
+ .addHeader("_sign", signMd5)
|
|
|
+ .get().build();
|
|
|
+ // 发送请求获取响应
|
|
|
+ try {
|
|
|
+ Response response = okHttpClient.newCall(request).execute();
|
|
|
+ // 判断请求是否成功
|
|
|
+ if (response.isSuccessful()) {
|
|
|
+ response.body().toString();
|
|
|
+ // 打印服务端返回结果
|
|
|
+ return Objects.requireNonNull(response.body()).string();
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return "{}";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param patentNo
|
|
|
+ * @return
|
|
|
+ * @throws IOException
|
|
|
+ * @author 李仁杰
|
|
|
+ * 获得专利被引用次数api
|
|
|
+ */
|
|
|
+ public String getCitedNumByPubNoApi(String patentNo) throws IOException {
|
|
|
+ String url = "https://api.patentstar.com.cn/api/Patent/CitedNumByPubNo/"+patentNo;
|
|
|
+ String appId = "2000041";
|
|
|
+ String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
|
|
|
+ Long currentTimeMillis = System.currentTimeMillis()/ 1000;
|
|
|
+ String Sign = appId + appkey + currentTimeMillis.toString();
|
|
|
+ String signMd5 = FormatUtil.MD5(Sign);
|
|
|
+ // 创建一个OkHttpClient对象
|
|
|
+ OkHttpClient okHttpClient = new OkHttpClient();
|
|
|
+ // 创建一个请求对象
|
|
|
+ Request request = new Request.Builder().url(url)
|
|
|
+ .addHeader("_appid", "2000041")
|
|
|
+ .addHeader("_timestamp", currentTimeMillis.toString())
|
|
|
+ .addHeader("_sign", signMd5)
|
|
|
+ .get().build();
|
|
|
+ // 发送请求获取响应
|
|
|
+ try {
|
|
|
+ Response response = okHttpClient.newCall(request).execute();
|
|
|
+ // 判断请求是否成功
|
|
|
+ if (response.isSuccessful()) {
|
|
|
+ response.body().toString();
|
|
|
+ // 打印服务端返回结果
|
|
|
+ return Objects.requireNonNull(response.body()).string();
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return "{}";
|
|
|
+ }
|
|
|
+}
|