Commit e3ca0ad0 authored by 万建斌's avatar 万建斌

2019-09-25 作者+机构检索论文

parent 9ffcd2dc
......@@ -2,7 +2,6 @@ package com.cesgroup.kingkong.mapper;
import java.util.HashMap;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
......@@ -37,4 +36,14 @@ public class EsMapper {
String result = httpClientHelper.get(uriString, paramMap, header);
return result;
}
public String getArticleInfo(HashMap<String, Object> paramMap){
String uriString ="https://api.elsevier.com/content/search/scopus";
HashMap<String, Object> header = new HashMap<String, Object>();
header.put("X-ELS-APIKey", "d7513bc36ec90aa7662c0cfb28b3dd3b");
header.put("Content-Type", "application/json");
header.put("Accept", "application/json");
String result = httpClientHelper.get(uriString, paramMap, header);
return result;
}
}
......@@ -6,6 +6,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import com.alibaba.fastjson.parser.ParserConfig;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -79,7 +82,61 @@ public class QueryService {
result = parseArticleInfo(resultJsonString);
return result;
}
/**
* @Description: 查询论文信息
* @Param: [params]
* @return: java.util.Map<java.lang.String,java.lang.Object>
* @Author: Wanjianbin
* @Date: 2019/9/25
*/
public Map<String, Object> queryArticleInfo(Map<String, Object> params) {
int start = 0;
int count = 10;
StringBuilder queryStr = new StringBuilder();
// 分页参数
Integer current = MapUtils.getInteger(params, "current");
if(current != null){
start = (current - 1) * 10;
}
// 组合查询条件字符串
String authorName = MapUtils.getString(params, "authorName");
if(StringUtils.isNotEmpty(authorName)){
queryStr.append("AUTHOR-NAME(");
queryStr.append(authorName);
queryStr.append(")");
}
String affilorg = MapUtils.getString(params, "affilorg");
if(StringUtils.isNotEmpty(affilorg)){
if(StringUtils.isNotEmpty(authorName)){
queryStr.append(" AND ");
}
queryStr.append("AFFILORG(");
queryStr.append(affilorg);
queryStr.append(")");
}
HashMap<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("start", start);
paramMap.put("count", count);
paramMap.put("query", queryStr.toString());
String resultJsonString=esMapper.getArticleInfo(paramMap);
System.out.println("查询出的字符串: "+resultJsonString);
Map<String, Object> result = parseArticleInfo(resultJsonString);
if(result != null){
List<Map> list = (List<Map>) result.get("entry");
if(list.get(0).get("error") != null){
return null;
}
return result;
}
return null;
}
/**
* 解析论文信息
* @param articleInfo
......@@ -87,8 +144,12 @@ public class QueryService {
* Map<String,Object>
*/
private Map<String, Object> parseArticleInfo(String articleInfo) {
Map<String, Object> result = new HashMap<String, Object>();
return result;
if(StringUtils.isNotEmpty(articleInfo)) {
ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
Map<String, Object> result = (Map<String, Object>) JSONObject.parse(articleInfo);
return (Map<String, Object>) result.get("search-results");
}
return null;
}
/**
......
......@@ -4,9 +4,7 @@ import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.cesgroup.common.utils.RestAPIResult;
import com.cesgroup.kingkong.interceptor.RequiredPermission;
......@@ -57,16 +55,23 @@ public class SearchContrllor {
}
return panResult;
}
/**查询论文接口(待完成)
* @return
* RestAPIResult<Object>
*/
@RequiredPermission
@RequestMapping(value = "queryArticleInfo", method = { RequestMethod.POST })
public RestAPIResult<Object> queryArticleInfo() {
public RestAPIResult<Object> queryArticleInfo(@RequestParam Map<String, Object> params) {
RestAPIResult<Object> panResult = new RestAPIResult<Object>();
Map<String, Object> result = null;
result = queryService.queryArticleInfo();
Map<String, Object> result = queryService.queryArticleInfo(params);
if(result == null || result.size() <= 0){
// 未查出数据时,去掉机构名后重新查询
params.remove("affilorg");
result = queryService.queryArticleInfo(params);
}
panResult.setRespData(result);
return panResult;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment