有时间再进行整理
packagexxx.service.impl;importjava.util.HashMap;importjava.util.Map;importjava.util.Map.Entry;importorg.apache.commons.beanutils.BeanUtils;importorg.apache.log4j.Logger;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.stereotype.Service;importorg.springframework.transaction.annotation.Transactional;importorg.springframework.web.client.RestTemplate;importcom.google.common.base.Joiner;importxxx.config.ApplicationProperties;importxxx.dbmodel.Copyright;importxxx.repository.generic.CopyrightGenericRepository;importxxx.service.CopyrightService;importxxx.web.rest.util.StringUtil;
@Service
@Transactionalpublic class CopyrightServiceImpl implementsCopyrightService {private static final Logger log = Logger.getLogger(CopyrightServiceImpl.class);
@AutowiredprivateApplicationProperties applicationProperties;
@AutowiredprivateCopyrightGenericRepository copyrightGenericTRepository;
@Qualifier("solrRestTemplate")
@AutowiredprivateRestTemplate restTemplate;
@OverridepublicCopyright getOneById(String id) {returncopyrightGenericTRepository.getOneById(id);
}
@Overridepublic String getPageFromSolr(Copyright copyright, int page, introws,
String sidx, String sord) {//查询参数Map
Map paramsMap = new HashMap<>();
Map copyrightFields = new HashMap<>();try{
copyrightFields=BeanUtils.describe(copyright);
}catch(Exception e) {
log.info("search parms is error in CopyrightFieldsServiceImpl!", e);
}for (Entryfield : copyrightFields.entrySet()) {
String key=field.getKey();
String value=field.getValue();if(StringUtil.isNullStr(value) || "class".equals(key)){continue;
}if(key.endsWith("Id")){
paramsMap.put(key, value);
}else{
paramsMap.put(key,"*"+value+"*");
}
}//指定查询表名
paramsMap.put("searchType", "CopyrightMG");if(copyright.getBeginTime() != null){
paramsMap.put("beginTime","["+copyright.getBeginTime()+" TO * ]");
}if(copyright.getEndTime() != null){
paramsMap.put("endTime","[ * TO "+copyright.getEndTime()+" ]");
}//查询条件Map
Map queryMap =setQueryMap(paramsMap, page, rows, sidx, sord);//solr查询
return restTemplate.postForObject(applicationProperties.getStorage().getSorlUrl(), queryMap, String.class);
}private Map setQueryMap(Map paramsMap, int page, introws, String sidx, String sord){
Map query = new HashMap<>();
String paramStr= Joiner.on(",").withKeyValueSeparator(":").join(paramsMap);
query.put("filterQueries", paramStr);
query.put("query", "*:*");
query.put("start", (page-1)*rows);//开始位置
query.put("rows", rows);//查询条数
String sort = "copyrightId desc";if(!StringUtil.isNullStr(sidx)){
sort= sidx + " " +sord;
}
query.put("sort", sort);//指定查询数媒集合
query.put("collection", applicationProperties.getStorage().getSorlIndexLibrary());
query.put("returnType", "1");returnquery;
}
@OverridepublicLong count() {returncopyrightGenericTRepository.count();
}
}