123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510 |
- 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.*;
- import java.util.concurrent.TimeUnit;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- /**
- * 调用外部接口的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 static String formatQuery(String query){
- String str = "((abc=13+ac=232)+ad=33+(ad=2))";
- StringBuilder sb =new StringBuilder(str);
- String regex = "(?<=[\\(\\)\\+\\-=])[\\w\\W]+?(?=[\\(\\+\\-=\\)])";
- Pattern pattern = Pattern.compile(regex);
- Matcher matcher = pattern.matcher(str);
- Map<Integer,Integer> map =new LinkedHashMap<>();
- while (matcher.find()) {
- String a= matcher.group();
- String regex2 = "[^\\(^\\)^\\+^-^=^*]";
- Pattern pattern2 = Pattern.compile(regex2);
- Matcher matcher2 = pattern2.matcher(a);
- System.out.println(matcher.start() + "->" + matcher.end()+matcher.group());
- Integer start =matcher.start();
- if(matcher2.find()){
- start +=matcher2.start();
- }
- map.put(start,matcher.end());
- }
- List <Integer> list = new ArrayList<Integer>(map.keySet());
- for(int i=0;i<list.size();i+=2){
- int start1 = list.get(i);
- int end1 = map.get(list.get(i));
- int len1 =end1-start1;
- int start2 = list.get(i+1);
- int end2 = map.get(list.get(i+1));
- int len2 =end2-start2;
- int diff =len2 -len1;
- if(diff>0){
- sb.replace(start1,end1,str.substring(start2,end2));
- sb.replace(start2+diff,end2+diff,str.substring(start1,end1));
- }
- else {
- sb.replace(start2,end2,str.substring(start1,end1));
- sb.replace(start1,end1,str.substring(start2,end2));
- }
- System.out.println(sb);
- }
- String aa =sb.toString();
- aa.replace("\\","=");
- System.out.println(aa);
- return "";
- }
- public Map<String,Object> patentStarSearchApi(PatentStarListDto patentStarListDto) throws IOException {
- String formQuery=patentStarListDto.getCurrentQuery();
- 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 Data= (JSONObject)jsonObject.get("Data");
- // 打印服务端返回结果
- // return Objects.requireNonNull(response.body()).string();
- Map<String,Object> reMap =new HashMap<>();
- reMap.put("size",patentStarListDto.getRowCount());
- reMap.put("current",patentStarListDto.getPageNum());
- reMap.put("records",Data.get("List"));
- reMap.put("total",Data.get("HitCount"));
- return reMap;
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return null;
- }
- /**
- * @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 "{}";
- }
- public static void main(String[] args) {
- String str ="D=ABC";
- String aa= PatentStarApiService.formatQuery(str);
- System.out.println(aa);
- }
- }
|