From 51d3edebfdfbf319fd554ebefa5f16cfe501c354 Mon Sep 17 00:00:00 2001 From: 2510220824 <2510220824@qq.com> Date: Tue, 22 Jun 2021 17:14:39 +0800 Subject: [PATCH] =?UTF-8?q?add:=E9=9B=86=E6=88=90es=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- adc-da-search/pom.xml | 245 +++ .../da/search/config/ElasticsearchConfig.java | 57 + .../config/ElasticsearchProperties.java | 45 + .../controller/SearchCenterController.java | 328 ++++ .../controller/StandLawsSearchController.java | 104 ++ .../da/search/controller/TestController.java | 161 ++ .../da/search/dto/SearchBussExportDto.java | 61 + .../da/search/dto/SearchItemsExportDto.java | 74 + .../da/search/dto/SearchLawsExportDto.java | 61 + .../adc/da/search/dto/SearchMsgExportDto.java | 39 + .../da/search/dto/SearchStandExportDto.java | 61 + .../java/com/adc/da/search/entity/EsPage.java | 117 ++ .../da/search/entity/FullTextSearchEO.java | 93 ++ .../adc/da/search/entity/PartProductEO.java | 37 + .../da/search/entity/SarAdvanceSearchVO.java | 69 + .../search/entity/SarBussionessStandEO.java | 548 +++++++ .../adc/da/search/entity/SearchInfoEO.java | 192 +++ .../adc/da/search/entity/SearchListDto.java | 42 + .../da/search/entity/SeniorSearchInfoEO.java | 715 +++++++++ .../com/adc/da/search/entity/StandLawsEO.java | 926 +++++++++++ .../adc/da/search/page/PartProductEOPage.java | 358 +++++ .../search/service/ElasticsearchService.java | 270 ++++ .../search/service/SearchCenterService.java | 30 + .../service/StandLawsSearchService.java | 19 + .../impl/ElasticsearchServiceImpl.java | 748 +++++++++ .../service/impl/SearchCenterServiceImpl.java | 1396 +++++++++++++++++ .../impl/StandLawsSearchServiceImpl.java | 490 ++++++ .../da/search/util/ElasticsearchConstant.java | 17 + adc-da-slrs/pom.xml | 65 + .../java/com/adc/da/common/ConvertMqEO.java | 223 +++ .../com/adc/da/mq/dao/OtConvertEODao.java | 10 + .../adc/da/mq/service/CreateMQService.java | 77 + .../da/mq/service/CreateStandMQService.java | 32 + .../adc/da/mq/service/SendStandMQService.java | 316 ++++ .../service/ISarStandardsInfoService.java | 4 + .../impl/SarStandardsInfoServiceImpl.java | 136 ++ 36 files changed, 8166 insertions(+) create mode 100644 adc-da-search/pom.xml create mode 100644 adc-da-search/src/main/java/com/adc/da/search/config/ElasticsearchConfig.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/config/ElasticsearchProperties.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/controller/StandLawsSearchController.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/controller/TestController.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/dto/SearchBussExportDto.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/dto/SearchItemsExportDto.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/dto/SearchLawsExportDto.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/dto/SearchMsgExportDto.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/dto/SearchStandExportDto.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/entity/EsPage.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/entity/FullTextSearchEO.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/entity/PartProductEO.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/entity/SarAdvanceSearchVO.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/entity/SarBussionessStandEO.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/entity/SearchInfoEO.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/entity/SearchListDto.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/entity/SeniorSearchInfoEO.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/entity/StandLawsEO.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/page/PartProductEOPage.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/service/ElasticsearchService.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/service/StandLawsSearchService.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/service/impl/ElasticsearchServiceImpl.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/service/impl/StandLawsSearchServiceImpl.java create mode 100644 adc-da-search/src/main/java/com/adc/da/search/util/ElasticsearchConstant.java create mode 100644 adc-da-slrs/src/main/java/com/adc/da/common/ConvertMqEO.java create mode 100644 adc-da-slrs/src/main/java/com/adc/da/mq/dao/OtConvertEODao.java create mode 100644 adc-da-slrs/src/main/java/com/adc/da/mq/service/CreateMQService.java create mode 100644 adc-da-slrs/src/main/java/com/adc/da/mq/service/CreateStandMQService.java create mode 100644 adc-da-slrs/src/main/java/com/adc/da/mq/service/SendStandMQService.java diff --git a/adc-da-search/pom.xml b/adc-da-search/pom.xml new file mode 100644 index 00000000..ae2ae633 --- /dev/null +++ b/adc-da-search/pom.xml @@ -0,0 +1,245 @@ + + + 4.0.0 + + + com.adc + foton-slrs-system-rest + 3.0.0 + + + adc-da-search + 1.0.0 + + jar + + + UTF-8 + UTF-8 + 1.8 + 1.7 + 1.8 + 2.6.6 + 1.4.0-RC2 + 4.3.9.RELEASE + + + + + adc + http://60.247.58.121:8182/nexus/content/groups/public + + true + + + true + + + + + + + + thirdparty + Nexus Thirdparty Repository + http://60.247.58.121:8182/nexus/content/repositories/thirdparty/ + + + + + + + + + + + com.adc + adc-da-base + 2.0.0 + + + + com.adc + adc-da-util + 2.2.41 + + + org.bouncycastle + bcprov-jdk14 + + + + + + com.adc + adc-da-sys + 3.0.0 + + + + + com.adc + adc-da-file + 2.2.0 + + + + com.adc + adc-da-druid + 2.0.0 + + + com.adc + adc-da-excel + 2.0.3 + + + org.springframework.boot + spring-boot-starter-test + test + + + + + org.springframework.boot + spring-boot-starter-amqp + + + org.elasticsearch.client + transport + 6.3.2 + + + org.elasticsearch + elasticsearch + 6.3.2 + + + + org.apache.logging.log4j + log4j-core + + + org.springframework.boot + spring-boot-starter-web + + + + + + org.springframework.boot + spring-boot-starter-jetty + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 1.2.0 + + + + net.sourceforge.javacsv + javacsv + 2.0 + + + net.sf.opencsv + opencsv + 2.3 + + + + com.alibaba + fastjson + 1.2.9 + + + com.google.guava + guava + 19.0 + + + com.mashape.unirest + unirest-java + 1.4.9 + + + + net.sf.json-lib + json-lib + 2.4 + jdk15 + + + commons-logging + commons-logging + + + commons-beanutils + commons-beanutils + + + commons-collections + commons-collections + + + + + org.apache.httpcomponents + httpclient + 4.4.1 + + + org.apache.httpcomponents + httpcore + 4.4.1 + + + + org.aspectj + aspectjweaver + + + + + cn.afterturn + easypoi-base + 4.1.2 + + + cn.afterturn + easypoi-web + 4.1.2 + + + cn.afterturn + easypoi-annotation + 4.1.2 + + + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + + + + + + diff --git a/adc-da-search/src/main/java/com/adc/da/search/config/ElasticsearchConfig.java b/adc-da-search/src/main/java/com/adc/da/search/config/ElasticsearchConfig.java new file mode 100644 index 00000000..26fec5b6 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/config/ElasticsearchConfig.java @@ -0,0 +1,57 @@ +package com.adc.da.search.config; + + +import org.elasticsearch.client.transport.TransportClient; +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.transport.TransportAddress; +import org.elasticsearch.transport.client.PreBuiltTransportClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * gaoyan + * 2018-08-23 + * elasticsearch配置config + */ +@Configuration +public class ElasticsearchConfig { + + private static final Logger logger = LoggerFactory.getLogger(ElasticsearchConfig.class); + + @Autowired + private ElasticsearchProperties elasticsearchProperties; + + @Bean + public TransportClient client() throws UnknownHostException { + TransportClient client = null; + try { + Settings settings = Settings.builder() + .put("client.transport.sniff", true)//增加嗅探机制,找到ES集群 + .put("thread_pool.search.size", elasticsearchProperties.getPoolSize())//增加线程池个数,暂时设为5 + .put("cluster.name",elasticsearchProperties.getClustername()) + .build(); + client = new PreBuiltTransportClient(settings) + .addTransportAddress(new TransportAddress(InetAddress.getByName(elasticsearchProperties.getIp()),elasticsearchProperties.getPort())); + } catch (java.net.UnknownHostException e) { + logger.error(e.getMessage(),e); + } + return client; + } + + /*@After + public void tearDown() throws Exception { + if (client != null) { + client.close(); + } + + }*/ + + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/config/ElasticsearchProperties.java b/adc-da-search/src/main/java/com/adc/da/search/config/ElasticsearchProperties.java new file mode 100644 index 00000000..d0f4b9d1 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/config/ElasticsearchProperties.java @@ -0,0 +1,45 @@ +package com.adc.da.search.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "elasticsearch") +public class ElasticsearchProperties { + private String clustername; + private String ip; + private Integer port; + private Integer poolSize; + + public String getClustername() { + return clustername; + } + + public void setClustername(String clustername) { + this.clustername = clustername; + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip; + } + + public Integer getPort() { + return port; + } + + public void setPort(Integer port) { + this.port = port; + } + + public Integer getPoolSize() { + return poolSize; + } + + public void setPoolSize(Integer poolSize) { + this.poolSize = poolSize; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java b/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java new file mode 100644 index 00000000..27957f6f --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java @@ -0,0 +1,328 @@ +package com.adc.da.search.controller; + +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import com.adc.da.base.web.BaseController; +import com.adc.da.person.service.PersonCollectEOService; +import com.adc.da.search.dto.*; +import com.adc.da.search.entity.SarAdvanceSearchVO; +import com.adc.da.search.entity.SeniorSearchInfoEO; +import com.adc.da.search.service.ElasticsearchService; +import com.adc.da.search.service.SearchCenterService; +import com.adc.da.util.exception.AdcDaBaseException; +import com.adc.da.util.http.PageInfo; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; +import com.adc.da.util.utils.IOUtils; +import com.adc.da.util.utils.StringUtils; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.elasticsearch.client.transport.TransportClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.regex.Pattern; + +import static com.adc.da.sys.common.ReadExcelName.encodeFileName; + +@RestController +@RequestMapping("/${restPath}/search/searchCenter") +@Api(description = "|SearchCenter|") +public class SearchCenterController extends BaseController> { + + @Autowired + private TransportClient client; + @Autowired + private SearchCenterService searchCenterService; + + @Autowired + private PersonCollectEOService personCollectEOService; + + @Autowired + private ElasticsearchService elasticsearchService; + + /** + * + * @param searchInfoEO + * @return + */ + @ApiOperation(value = "|SearchCenter|查询") + @PostMapping(value="/searchSarBykey") + public ResponseMessage>> searchSarBykey(SeniorSearchInfoEO searchInfoEO) throws Exception{ + List> result = new ArrayList<>(); + if (StringUtils.isAlphanumericSpace(searchInfoEO.getSelectIndex())) { + if(elasticsearchService.isIndexExist(searchInfoEO.getSelectIndex())){ + if("fulltextserch".equals(searchInfoEO.getSelectIndex()) || "fulltextserch"== searchInfoEO.getSelectIndex()){ + Pattern pattern = Pattern.compile("^[a-zA-Z]+\\s[0-9a-zA-Z\\.\\(\\(\\)\\)\\-\\s]+$"); + if (null != searchInfoEO.getSelectValue() && StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { + if (pattern.matcher(searchInfoEO.getSelectValue()).matches()) { + result = searchCenterService.searchSarBykeyAndHighLightNumber(searchInfoEO); + }else { + result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO); + } + } else { + result = searchCenterService.searchSarBykeyAndHighLight(searchInfoEO); + } + for (int i = 0; i < result.size(); i++) { + String collectId = personCollectEOService.queryCollectByUserAndId(result.get(i).get("id").toString()); + result.get(i).put("collectId", collectId); + } + return Result.success(getPageInfo(searchInfoEO.getPager(), result)); + } else { + result = searchCenterService.searchSarBykey(searchInfoEO); + // 非动态消息的需要查询为我推荐 + for (int i = 0; i < result.size(); i++) { + String collectId = personCollectEOService.queryCollectByUserAndId(result.get(i).get("id").toString()); + result.get(i).put("collectId", collectId); + result.get(i).put("content", ""); + result.get(i).put("baseSearchContent", ""); + } + return Result.success(getPageInfo(searchInfoEO.getPager(), result)); + } + } else { + return Result.error("未查到相关数据"); + } + } else { + return Result.error("数据错误"); + } + } + + @ApiOperation(value = "|SearchCenter|查询用于导出数据") + @PostMapping(value="/searchIdToImport") + public ResponseMessage searchIdToImport(SeniorSearchInfoEO searchInfoEO){ + if (StringUtils.isAlphanumericSpace(searchInfoEO.getSelectIndex())) { + if(elasticsearchService.isIndexExist(searchInfoEO.getSelectIndex())){ + String [] result = searchCenterService.searchIdToImport(searchInfoEO); + return Result.success(result); + } + else { + return Result.error("未查到相关数据"); + } + } else { + return Result.error("数据错误"); + } + } + + @ApiOperation(value = "|SearchCenter|查询") + @PostMapping(value="/selectGroupdata") + public ResponseMessage> selectGroupdata(SeniorSearchInfoEO searchInfoEO){ + Map result = new HashMap<>(); + result = searchCenterService.selectGroupdata(searchInfoEO); + return Result.success(result); + } + + @ApiOperation(value = "|SarLawsInfoEO|导出搜索中心数据") + @GetMapping("/exportSearchCenterDatas") + public void exportSearchCenterDatas(String exportDatas,String searchType, HttpServletResponse response, HttpServletRequest request) throws Exception{ + OutputStream os = null; + if ("bussstand".equals(searchType)){ + searchType = "stand"; + }else if ("enterprise".equals(searchType)){ + searchType = "bussstand"; + } + Workbook workbook = null; + try{ + response.setHeader("Content-Disposition", + "attachment; filename=" + encodeFileName( "检索结果.xlsx", request)); + response.setContentType("application/force-download"); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + //集合 sarAdvanceSearc 的字符串 + + String sarAdvanceSearcString = subString(exportDatas,"[{","}]"); + if (StringUtils.isNotBlank(sarAdvanceSearcString)){ + sarAdvanceSearcString = sarAdvanceSearcString.replace("\\\"","\""); + } + SeniorSearchInfoEO searchInfoEO = null; + if (!"none".equals(sarAdvanceSearcString)) { + exportDatas = exportDatas.replace("[{" + sarAdvanceSearcString + "}]", ""); + JSONObject jsonObject = JSONObject.parseObject(exportDatas); + List sarAdvanceSearchVO = new ArrayList<>(Arrays.asList(sarAdvanceSearcString.split("},"))); + List advanceSearchVOList = new ArrayList<>(); + int flag = 0; + for (String sarAdvanceSearch : sarAdvanceSearchVO) { + JSONObject jsonObjectSAS = null; + if (flag == 0) { + jsonObjectSAS = JSONObject.parseObject("{" + sarAdvanceSearch + "}"); + } else { + jsonObjectSAS = JSONObject.parseObject(sarAdvanceSearch + "}"); + } + SarAdvanceSearchVO sarAdvanceSearchEO = JSONObject.toJavaObject(jsonObjectSAS, SarAdvanceSearchVO.class); + advanceSearchVOList.add(sarAdvanceSearchEO); + flag++; + } + searchInfoEO = JSONObject.toJavaObject(jsonObject, SeniorSearchInfoEO.class); + searchInfoEO.setAdvanceSearchVOList(advanceSearchVOList); + }else { + JSONObject jsonObject=JSONObject.parseObject(exportDatas); + searchInfoEO = JSONObject.toJavaObject(jsonObject, SeniorSearchInfoEO.class); + } + if ("INLAND_STAND".equals(searchType)) { + searchType = "stand"; //guonei + }else if ("INLAND_LAWS".equals(searchType)) { + searchType = "laws"; //zhengce + }else if ("BUSINESS_STAND".equals(searchType)) { + searchType = "bussstand"; //enterprise + }else if ("DYNAMIC_INFORMATION".equals(searchType)) { + searchType = "msgdyinfo"; + }else if ("items".equals(searchType)) { + searchType = "items"; + } + searchInfoEO.setSelectIndex(searchType); + searchInfoEO.setSelectValue(searchInfoEO.getKeywords()); + //存放需要导出的数据 + List> result = new ArrayList<>(); + result = searchCenterService.searchSarBykey(searchInfoEO); + if("stand".equals(searchType)){ + List dtoDatas = new ArrayList<>(); + for(int i=0;i dtoDatas = new ArrayList<>(); + for(int i=0;i dtoDatas = new ArrayList<>(); + for(int i=0;i dtoDatas = new ArrayList<>(); +// for(int i=0;i dtoDatas = new ArrayList<>(); + for(int i=0;i> { + + private static final Logger logger = LoggerFactory.getLogger(StandLawsSearchController.class); + + @Autowired + private ElasticsearchService elasticsearchService; + + /** + * + * @param + * @return + */ + @ApiOperation(value = "|BussnessStand|创建索引") + @PostMapping(value="/createBussstandIndex") + public ResponseMessage createBussstandIndex(){ + XContentBuilder mapping = null; + try { + mapping = XContentFactory.jsonBuilder() + .startObject() + .startObject("properties") //设置之定义字段 + .startObject("apply_arctic") + .field("type","text") //设置数据类型 + .endObject() + .startObject("applyarcticshow") + .field("type","text") + .endObject() + .startObject("energy_kind") + .field("type","text") //设置数据类型 + .endObject() + .startObject("id") + .field("type","text") //设置数据类型 + .endObject() + .startObject("issue_time") + .field("type","date") //设置Date类型 + // .field("format","yyyy-MM-dd HH:mm:ss") //设置Date的格式 + .endObject() + .startObject("nameshow") + .field("type","text") //设置数据类型 + .endObject() + .startObject("numbershow") + .field("type","text") //设置数据类型 + .endObject() + .startObject("put_time") + .field("type","date") //设置数据类型 + .endObject() + .startObject("replace_stand_num") + .field("type","text") //设置数据类型 + .endObject() + .startObject("replaced_stand_num") + .field("type","text") //设置数据类型 + .endObject() + .startObject("standstateshow") + .field("type","text") //设置数据类型 + .endObject() + .startObject("statecode") + .field("type","text") //设置数据类型 + .endObject() + .startObject("type") + .field("type","text") //设置数据类型 + .endObject() + .startObject("valid_flag") + .field("type","long") //设置数据类型 + .endObject() + .startObject("content") + .field("type","text") //设置数据类型 + .endObject() + .endObject() + .endObject(); + } catch (IOException e) { + logger.error(e.getMessage(),e); + } + boolean restule = elasticsearchService.createIndex("newbussstand",mapping); + if (restule) { + return Result.success("创建成功"); + } else { + return Result.error("数据错误"); + } + } + + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/controller/TestController.java b/adc-da-search/src/main/java/com/adc/da/search/controller/TestController.java new file mode 100644 index 00000000..5b3e10f4 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/controller/TestController.java @@ -0,0 +1,161 @@ +package com.adc.da.search.controller; + +import com.adc.da.search.entity.PartProductEO; +import com.adc.da.search.service.ElasticsearchService; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import org.elasticsearch.action.index.IndexResponse; +import org.elasticsearch.action.search.SearchRequestBuilder; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.action.search.SearchType; +import org.elasticsearch.client.transport.TransportClient; +import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.common.xcontent.XContentFactory; +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.index.query.RangeQueryBuilder; +import org.elasticsearch.search.SearchHit; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import static com.adc.da.search.util.ElasticsearchConstant.SUCCESS_DELETED; + +@RestController +@RequestMapping("/${restPath}") +@Api(description = "|testElasticsearch|") +public class TestController { + + private static final Logger logger = LoggerFactory.getLogger(TestController.class); + + @Autowired + private TransportClient client; + @Autowired + private ElasticsearchService elasticsearchService; + + + + @PostMapping("add/book/novel") + @ResponseBody + public ResponseEntity add(@RequestParam(name ="title") String title, + @RequestParam(name ="author") String author, + @RequestParam(name ="word_count") String wordCount, + @RequestParam(name ="publish_date") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date publishDate){ + try { + XContentBuilder content =XContentFactory.jsonBuilder() + .startObject() + .field("title",title) + .field("author",author) + .field("word_count",wordCount) + .field("publish_date",publishDate.getTime()) + .endObject(); + IndexResponse result = this.client.prepareIndex("book","novel").setSource(content).get(); + return new ResponseEntity(result.getId(),HttpStatus.OK); + } + catch (IOException e) { + logger.error(e.getMessage(),e); + return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + + + @DeleteMapping("deleteOneDucumentTest") + @ResponseBody + public ResponseEntity delete(@RequestParam(name="id") String id) { + String response = elasticsearchService.deleteDataById("book","novel",id); + if(response.equals(SUCCESS_DELETED)){ + return new ResponseEntity(response, HttpStatus.OK); + } + else { + return new ResponseEntity(response, HttpStatus.NOT_FOUND); + } + } + + + + @PostMapping("query/book/novel") + @ResponseBody + public ResponseEntity query( + @RequestParam(name="title",required = false) String title, + @RequestParam(name="author",required = false) String author, + @RequestParam(name="gt_word_count",defaultValue = "0",required = false) int gtWordCount, + @RequestParam(name="lt_word_count",required = false) Integer ltWordCount + ){ + BoolQueryBuilder boolQueryBuilder =QueryBuilders.boolQuery(); + if(author!=null){ + boolQueryBuilder.must(QueryBuilders.matchQuery("author",author)); + } + if(title!=null){ + boolQueryBuilder.must(QueryBuilders.matchQuery("title",title)); + } + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("word_count").from(gtWordCount); + + if(ltWordCount!=null && ltWordCount>0 ){ + rangeQueryBuilder.to(ltWordCount); + } + boolQueryBuilder.filter(rangeQueryBuilder); + SearchRequestBuilder searchRequestBuilder =this.client.prepareSearch("book") + .setTypes("novel") + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .setQuery(boolQueryBuilder) + .setFrom(0) + .setSize(10); + System.out.println(searchRequestBuilder); + SearchResponse response =searchRequestBuilder.get(); + List> result = new ArrayList>(); + for (SearchHit hit:response.getHits()){ + result.add(hit.getSourceAsMap()); + } + return new ResponseEntity(result,HttpStatus.OK); + } + + + + @PostMapping("addIndexSerTest") + @ResponseBody + public String searchIndexTest() { + PartProductEO productEO= new PartProductEO(); + productEO.setCertNumber("er"); + productEO.setCorpId("cid"); + productEO.setCorpModel("cmodel"); + String indexstate = elasticsearchService.addData((JSONObject) JSON.toJSON(productEO),"testone","two"); + return indexstate; + } + + @PostMapping("bulktest") + @ResponseBody + public String bulkTest() throws IOException { + List list = new ArrayList(); + for(int i=0;i<100000;i++){ + PartProductEO productEO= new PartProductEO(); + productEO.setCertNumber("er"+i); + productEO.setCorpId("cid"+i); + productEO.setCorpModel("cmodel"+i); + list.add(JSONObject.parseObject(JSONObject.toJSON(productEO).toString())); + } + String indexstate = elasticsearchService.addBulkData("ymq_index","two",list); + return indexstate; + } + + @PostMapping("justtest") + @ResponseBody + public List> justtest() throws IOException { + String [] index={"bank","book"}; + String [] type={"_doc","_type"}; + String [] fields={"account_number", "balance"}; + List> indexstate = elasticsearchService.searchListDataGroupComplex(index,type); + return indexstate; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/dto/SearchBussExportDto.java b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchBussExportDto.java new file mode 100644 index 00000000..abe7336b --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchBussExportDto.java @@ -0,0 +1,61 @@ +package com.adc.da.search.dto; + +import cn.afterturn.easypoi.excel.annotation.Excel; + +public class SearchBussExportDto { + + @Excel(name = "企业标准号", orderNum = "1",width = 12) + private String numbershow; + + @Excel(name = "企业标准名称", orderNum = "1",width = 14) + private String nameshow; + + @Excel(name = "发布日期", orderNum = "1",width = 10) + private String issueTime; + +// @Excel(name = "实施日期", orderNum = "1",width = 10) + private String putTime; + + @Excel(name = "企业标准状态", orderNum = "1",width = 14) + private String standstateshow; + + public String getNumbershow() { + return numbershow; + } + + public void setNumbershow(String numbershow) { + this.numbershow = numbershow; + } + + public String getNameshow() { + return nameshow; + } + + public void setNameshow(String nameshow) { + this.nameshow = nameshow; + } + + public String getIssueTime() { + return issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + + public String getPutTime() { + return putTime; + } + + public void setPutTime(String putTime) { + this.putTime = putTime; + } + + public String getStandstateshow() { + return standstateshow; + } + + public void setStandstateshow(String standstateshow) { + this.standstateshow = standstateshow; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/dto/SearchItemsExportDto.java b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchItemsExportDto.java new file mode 100644 index 00000000..533ed67d --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchItemsExportDto.java @@ -0,0 +1,74 @@ +package com.adc.da.search.dto; + +import com.adc.da.excel.annotation.Excel; + +public class SearchItemsExportDto { + + @Excel(name = "条款号",width = 16) + private String itemsNum; + + @Excel(name = "条款名称",width = 16) + private String itemsName; + + @Excel(name = "新车型实施日期",width = 16) + private String newcarPutTime; + + @Excel(name = "在产车实施日期",width = 16) + private String productPutTime; + + @Excel(name = "关联零部件",width = 16) + private String parts; + + @Excel(name = "适用车型",width = 16) + private String applyArcticShow; + + public String getItemsNum() { + return itemsNum; + } + + public void setItemsNum(String itemsNum) { + this.itemsNum = itemsNum; + } + + public String getItemsName() { + return itemsName; + } + + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + + + + public String getParts() { + return parts; + } + + public void setParts(String parts) { + this.parts = parts; + } + + public String getNewcarPutTime() { + return newcarPutTime; + } + + public void setNewcarPutTime(String newcarPutTime) { + this.newcarPutTime = newcarPutTime; + } + + public String getProductPutTime() { + return productPutTime; + } + + public void setProductPutTime(String productPutTime) { + this.productPutTime = productPutTime; + } + + public String getApplyArcticShow() { + return applyArcticShow; + } + + public void setApplyArcticShow(String applyArcticShow) { + this.applyArcticShow = applyArcticShow; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/dto/SearchLawsExportDto.java b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchLawsExportDto.java new file mode 100644 index 00000000..c3a97ca6 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchLawsExportDto.java @@ -0,0 +1,61 @@ +package com.adc.da.search.dto; + +import cn.afterturn.easypoi.excel.annotation.Excel; + +public class SearchLawsExportDto { + + @Excel(name = "文件号", orderNum = "1",width = 10) + private String numbershow; + + @Excel(name = "文件名称", orderNum = "1",width = 10) + private String nameshow; + + @Excel(name = "发布日期", orderNum = "1",width = 10) + private String issueTime; + +// @Excel(name = "实施日期", orderNum = "1",width = 10) +// private String putTime; + + @Excel(name = "文件状态", orderNum = "1",width = 10) + private String standstateshow; + + public String getNumbershow() { + return numbershow; + } + + public void setNumbershow(String numbershow) { + this.numbershow = numbershow; + } + + public String getNameshow() { + return nameshow; + } + + public void setNameshow(String nameshow) { + this.nameshow = nameshow; + } + + public String getIssueTime() { + return issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + +// public String getPutTime() { +// return putTime; +// } + +// public void setPutTime(String putTime) { +// this.putTime = putTime; +// } +// + public String getStandstateshow() { + return standstateshow; + } + + public void setStandstateshow(String standstateshow) { + this.standstateshow = standstateshow; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/dto/SearchMsgExportDto.java b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchMsgExportDto.java new file mode 100644 index 00000000..bddee0c4 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchMsgExportDto.java @@ -0,0 +1,39 @@ +package com.adc.da.search.dto; + +import com.adc.da.excel.annotation.Excel; + +public class SearchMsgExportDto { + + @Excel(name = "所属模块", orderNum = "1",width = 10) + private String moduleName; + + @Excel(name = "动态标题", orderNum = "1",width = 10) + private String title; + + @Excel(name = "发布日期", orderNum = "1",width = 10) + private String issueTime; + + public String getModuleName() { + return moduleName; + } + + public void setModuleName(String moduleName) { + this.moduleName = moduleName; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getIssueTime() { + return issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/dto/SearchStandExportDto.java b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchStandExportDto.java new file mode 100644 index 00000000..763605ea --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/dto/SearchStandExportDto.java @@ -0,0 +1,61 @@ +package com.adc.da.search.dto; + +import cn.afterturn.easypoi.excel.annotation.Excel; + +public class SearchStandExportDto { + + @Excel(name = "标准号", orderNum = "1",width = 10) + private String numbershow; + + @Excel(name = "标准名称", orderNum = "1",width = 10) + private String nameshow; + + @Excel(name = "发布日期", orderNum = "1",width = 10) + private String issueTime; + +// @Excel(name = "实施日期", orderNum = "1",width = 10) + private String putTime; + + @Excel(name = "标准状态", orderNum = "1",width = 10) + private String standstateshow; + + public String getNumbershow() { + return numbershow; + } + + public void setNumbershow(String numbershow) { + this.numbershow = numbershow; + } + + public String getNameshow() { + return nameshow; + } + + public void setNameshow(String nameshow) { + this.nameshow = nameshow; + } + + public String getIssueTime() { + return issueTime; + } + + public void setIssueTime(String issueTime) { + this.issueTime = issueTime; + } + + public String getPutTime() { + return putTime; + } + + public void setPutTime(String putTime) { + this.putTime = putTime; + } + + public String getStandstateshow() { + return standstateshow; + } + + public void setStandstateshow(String standstateshow) { + this.standstateshow = standstateshow; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/EsPage.java b/adc-da-search/src/main/java/com/adc/da/search/entity/EsPage.java new file mode 100644 index 00000000..a1a9d14b --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/EsPage.java @@ -0,0 +1,117 @@ +package com.adc.da.search.entity; + +import java.util.List; +import java.util.Map; + +public class EsPage { + // 指定的或是页面参数 + private int currentPage; // 当前页 + private int pageSize; // 每页显示多少条 + + // 查询es结果 + private int recordCount; // 总记录数 + private List> recordList; // 本页的数据列表 + + // 计算 + private int pageCount; // 总页数 + private int beginPageIndex; // 页码列表的开始索引(包含) + private int endPageIndex; // 页码列表的结束索引(包含) + + /** + * 只接受前4个必要的属性,会自动的计算出其他3个属性的值 + * + * @param currentPage + * @param pageSize + * @param recordCount + * @param recordList + */ + public EsPage(int currentPage, int pageSize, int recordCount, List> recordList) { + this.currentPage = currentPage; + this.pageSize = pageSize; + this.recordCount = recordCount; + this.recordList = recordList; + + // 计算总页码 + pageCount = (recordCount + pageSize - 1) / pageSize; + + // 计算 beginPageIndex 和 endPageIndex + // >> 总页数不多于10页,则全部显示 + if (pageCount <= 10) { + beginPageIndex = 1; + endPageIndex = pageCount; + } + // >> 总页数多于10页,则显示当前页附近的共10个页码 + else { + // 当前页附近的共10个页码(前4个 + 当前页 + 后5个) + beginPageIndex = currentPage - 4; + endPageIndex = currentPage + 5; + // 当前面的页码不足4个时,则显示前10个页码 + if (beginPageIndex < 1) { + beginPageIndex = 1; + endPageIndex = 10; + } + // 当后面的页码不足5个时,则显示后10个页码 + if (endPageIndex > pageCount) { + endPageIndex = pageCount; + beginPageIndex = pageCount - 10 + 1; + } + } + } + + + public int getCurrentPage() { + return currentPage; + } + + public void setCurrentPage(int currentPage) { + this.currentPage = currentPage; + } + + public int getPageSize() { + return pageSize; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + public int getRecordCount() { + return recordCount; + } + + public void setRecordCount(int recordCount) { + this.recordCount = recordCount; + } + + public List> getRecordList() { + return recordList; + } + + public void setRecordList(List> recordList) { + this.recordList = recordList; + } + + public int getPageCount() { + return pageCount; + } + + public void setPageCount(int pageCount) { + this.pageCount = pageCount; + } + + public int getBeginPageIndex() { + return beginPageIndex; + } + + public void setBeginPageIndex(int beginPageIndex) { + this.beginPageIndex = beginPageIndex; + } + + public int getEndPageIndex() { + return endPageIndex; + } + + public void setEndPageIndex(int endPageIndex) { + this.endPageIndex = endPageIndex; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/FullTextSearchEO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/FullTextSearchEO.java new file mode 100644 index 00000000..e7e10925 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/FullTextSearchEO.java @@ -0,0 +1,93 @@ +package com.adc.da.search.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.util.Date; + +/** + */ +public class FullTextSearchEO extends BaseEntity { + + private String id; + private String indexType; + private String title; + private String textContent; + private Date issue_time; + private String issueTimeStr; + private Date put_time; + private String putTimeStr; + + private String itemsType; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIndexType() { + return indexType; + } + + public void setIndexType(String indexType) { + this.indexType = indexType; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getTextContent() { + return textContent; + } + + public void setTextContent(String textContent) { + this.textContent = textContent; + } + + public Date getIssue_time() { + return issue_time; + } + + public void setIssue_time(Date issue_time) { + this.issue_time = issue_time; + } + + public String getIssueTimeStr() { + return issueTimeStr; + } + + public void setIssueTimeStr(String issueTimeStr) { + this.issueTimeStr = issueTimeStr; + } + + public Date getPut_time() { + return put_time; + } + + public void setPut_time(Date put_time) { + this.put_time = put_time; + } + + public String getPutTimeStr() { + return putTimeStr; + } + + public void setPutTimeStr(String putTimeStr) { + this.putTimeStr = putTimeStr; + } + + public String getItemsType() { + return itemsType; + } + + public void setItemsType(String itemsType) { + this.itemsType = itemsType; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/PartProductEO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/PartProductEO.java new file mode 100644 index 00000000..ef28e334 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/PartProductEO.java @@ -0,0 +1,37 @@ +package com.adc.da.search.entity; + +import com.adc.da.base.entity.BaseEntity; + +/** + * 功能:PART_PRODUCT PartProductEOEntity
+ * 作者:code generator
+ * 日期: 2018-08-22
+ * 版权所有:版权归北京卡达克数据技术中心所有。
+ */ +public class PartProductEO extends BaseEntity { + + private String corpId; + private String certNumber; + private String corpModel; + public void setCorpId(String corpId) { + this.corpId = corpId; + } + public void setCertNumber(String certNumber) { + this.certNumber = certNumber; + } + public void setCorpModel(String corpModel) { + this.corpModel = corpModel; + } + + public String getCorpId() { + return corpId; + } + + public String getCertNumber() { + return certNumber; + } + + public String getCorpModel() { + return corpModel; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/SarAdvanceSearchVO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/SarAdvanceSearchVO.java new file mode 100644 index 00000000..1d771b3c --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/SarAdvanceSearchVO.java @@ -0,0 +1,69 @@ +package com.adc.da.search.entity; + +/** + * @Description: 标准法规库高级查询 + * @Author: yangxuenan + * date: 2020/12/11 9:22 + */ +public class SarAdvanceSearchVO { + + private String field; //字段 如 标准类别 + + private String value; //值 + + private String type; //查询类型 如 = != like + + private String connect; //连接符号 如 and or + + private String timeSt; + + private String timeEd; + + public String getField() { + return field; + } + + public void setField(String field) { + this.field = field; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getConnect() { + return connect; + } + + public void setConnect(String connect) { + this.connect = connect; + } + + public String getTimeSt() { + return timeSt; + } + + public void setTimeSt(String timeSt) { + this.timeSt = timeSt; + } + + public String getTimeEd() { + return timeEd; + } + + public void setTimeEd(String timeEd) { + this.timeEd = timeEd; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/SarBussionessStandEO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/SarBussionessStandEO.java new file mode 100644 index 00000000..e5f77a38 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/SarBussionessStandEO.java @@ -0,0 +1,548 @@ +package com.adc.da.search.entity; + +import com.adc.da.att.vo.AttFileVo; +import com.adc.da.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 功能:SAR_BUSSIONESS_STAND SarBussionessStandEOEntity
+ * 作者:code generator
+ * 日期: 2018-09-03
+ * 版权所有:版权归北京卡达克数据技术中心所有。
+ */ +public class SarBussionessStandEO extends BaseEntity { + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private Integer validFlag; + private String putUser; + private String citationUser; + private String responsibleUnit; + private String standFile; + private String tags; + private String standStatus; + private String replacedStandNum; + private String replaceStandNum; + private String quoteStand; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date firstPutTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date putYear; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date putTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date issueTime; + private String energyKind; + private String applyArctic; + private String standEnName; + private String standName; + //标准编码 + private String standCode; + //分类代号 + private String classifyCode; + private String standSubclass; + private String standGenera; + private String id; + + //目录ID 非标准信息表中的字段 + private String menuId; + private String menuParentId; + private String standStatusShow; // 标准状态下拉框 --单选 + private String applyArcticShow; // 适用车型下拉框 --多选 + private String energyKindShow; // 能源种类下拉框 --多选 + private String standGeneraShow; + private String standSubclassShow; + private String responsibleUnitShow; + private List standFileList = new ArrayList(); + + private String collectId; + + //文件的下载id + private String attId; + public String getAttId() { + return attId; + } + + public void setAttId(String attId) { + this.attId = attId; + } + + //记录是否修改了替代文件号 + private int upReplaceNumFlag; + //记录是否修改了文件号 + private int upNumFlag; + + /** + * java字段名转换为原始数据库列名。如果不存在则返回null
+ *

字段列表:

+ *
  • modifyTime -> modify_time
  • + *
  • creationTime -> creation_time
  • + *
  • validFlag -> valid_flag
  • + *
  • putUser -> put_user
  • + *
  • citationUser -> citation_user
  • + *
  • responsibleUnit -> responsible_unit
  • + *
  • standFile -> stand_file
  • + *
  • tags -> tags
  • + *
  • standStatus -> stand_status
  • + *
  • replacedStandNum -> replaced_stand_num
  • + *
  • replaceStandNum -> replace_stand_num
  • + *
  • quoteStand -> quote_stand
  • + *
  • firstPutTime -> first_put_time
  • + *
  • putYear -> put_year
  • + *
  • putTime -> put_time
  • + *
  • issueTime -> issue_time
  • + *
  • energyKind -> energy_kind
  • + *
  • applyArctic -> apply_arctic
  • + *
  • standEnName -> stand_en_name
  • + *
  • standName -> stand_name
  • + *
  • standCode -> stand_code
  • + *
  • classifyCode -> classify_code
  • + *
  • standSubclass -> stand_subclass
  • + *
  • standGenera -> stand_genera
  • + *
  • id -> id
  • + */ + public static String fieldToColumn(String fieldName) { + if (fieldName == null){ return null;} + switch (fieldName) { + case "modifyTime": return "modify_time"; + case "creationTime": return "creation_time"; + case "validFlag": return "valid_flag"; + case "putUser": return "put_user"; + case "citationUser": return "citation_user"; + case "responsibleUnit": return "responsible_unit"; + case "standFile": return "stand_file"; + case "tags": return "tags"; + case "standStatus": return "stand_status"; + case "replacedStandNum": return "replaced_stand_num"; + case "replaceStandNum": return "replace_stand_num"; + case "quoteStand": return "quote_stand"; + case "firstPutTime": return "first_put_time"; + case "putYear": return "put_year"; + case "putTime": return "put_time"; + case "issueTime": return "issue_time"; + case "energyKind": return "energy_kind"; + case "applyArctic": return "apply_arctic"; + case "standEnName": return "stand_en_name"; + case "standName": return "stand_name"; + case "standCode": return "stand_code"; + case "classifyCode": return "classify_code"; + case "standSubclass": return "stand_subclass"; + case "standGenera": return "stand_genera"; + case "id": return "id"; + default: return null; + } + } + + /** + * 原始数据库列名转换为java字段名。如果不存在则返回null
    + *

    字段列表:

    + *
  • modify_time -> modifyTime
  • + *
  • creation_time -> creationTime
  • + *
  • valid_flag -> validFlag
  • + *
  • put_user -> putUser
  • + *
  • citation_user -> citationUser
  • + *
  • responsible_unit -> responsibleUnit
  • + *
  • stand_file -> standFile
  • + *
  • tags -> tags
  • + *
  • stand_status -> standStatus
  • + *
  • replaced_stand_num -> replacedStandNum
  • + *
  • replace_stand_num -> replaceStandNum
  • + *
  • quote_stand -> quoteStand
  • + *
  • first_put_time -> firstPutTime
  • + *
  • put_year -> putYear
  • + *
  • put_time -> putTime
  • + *
  • issue_time -> issueTime
  • + *
  • energy_kind -> energyKind
  • + *
  • apply_arctic -> applyArctic
  • + *
  • stand_en_name -> standEnName
  • + *
  • stand_name -> standName
  • + *
  • stand_code -> standCode
  • + *
  • classify_code -> classifyCode
  • + *
  • stand_subclass -> standSubclass
  • + *
  • stand_genera -> standGenera
  • + *
  • id -> id
  • + */ + public static String columnToField(String columnName) { + if (columnName == null){ return null;} + switch (columnName) { + case "modify_time": return "modifyTime"; + case "creation_time": return "creationTime"; + case "valid_flag": return "validFlag"; + case "put_user": return "putUser"; + case "citation_user": return "citationUser"; + case "responsible_unit": return "responsibleUnit"; + case "stand_file": return "standFile"; + case "tags": return "tags"; + case "stand_status": return "standStatus"; + case "replaced_stand_num": return "replacedStandNum"; + case "replace_stand_num": return "replaceStandNum"; + case "quote_stand": return "quoteStand"; + case "first_put_time": return "firstPutTime"; + case "put_year": return "putYear"; + case "put_time": return "putTime"; + case "issue_time": return "issueTime"; + case "energy_kind": return "energyKind"; + case "apply_arctic": return "applyArctic"; + case "stand_en_name": return "standEnName"; + case "stand_name": return "standName"; + case "stand_code": return "standCode"; + case "classify_code": return "classifyCode"; + case "stand_subclass": return "standSubclass"; + case "stand_genera": return "standGenera"; + case "id": return "id"; + default: return null; + } + } + + /** **/ + public Date getModifyTime() { + return this.modifyTime; + } + + /** **/ + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + /** **/ + public Date getCreationTime() { + return this.creationTime; + } + + /** **/ + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public String getPutUser() { + return this.putUser; + } + + /** **/ + public void setPutUser(String putUser) { + this.putUser = putUser; + } + + /** **/ + public String getCitationUser() { + return this.citationUser; + } + + /** **/ + public void setCitationUser(String citationUser) { + this.citationUser = citationUser; + } + + /** **/ + public String getResponsibleUnit() { + return this.responsibleUnit; + } + + /** **/ + public void setResponsibleUnit(String responsibleUnit) { + this.responsibleUnit = responsibleUnit; + } + + /** **/ + public String getStandFile() { + return this.standFile; + } + + /** **/ + public void setStandFile(String standFile) { + this.standFile = standFile; + } + + /** **/ + public String getTags() { + return this.tags; + } + + /** **/ + public void setTags(String tags) { + this.tags = tags; + } + + /** **/ + public String getStandStatus() { + return this.standStatus; + } + + /** **/ + public void setStandStatus(String standStatus) { + this.standStatus = standStatus; + } + + /** **/ + public String getReplacedStandNum() { + return this.replacedStandNum; + } + + /** **/ + public void setReplacedStandNum(String replacedStandNum) { + this.replacedStandNum = replacedStandNum; + } + + /** **/ + public String getReplaceStandNum() { + return this.replaceStandNum; + } + + /** **/ + public void setReplaceStandNum(String replaceStandNum) { + this.replaceStandNum = replaceStandNum; + } + + /** **/ + public String getQuoteStand() { + return this.quoteStand; + } + + /** **/ + public void setQuoteStand(String quoteStand) { + this.quoteStand = quoteStand; + } + + /** **/ + public Date getFirstPutTime() { + return this.firstPutTime; + } + + /** **/ + public void setFirstPutTime(Date firstPutTime) { + this.firstPutTime = firstPutTime; + } + + /** **/ + public Date getPutYear() { + return this.putYear; + } + + /** **/ + public void setPutYear(Date putYear) { + this.putYear = putYear; + } + + /** **/ + public Date getPutTime() { + return this.putTime; + } + + /** **/ + public void setPutTime(Date putTime) { + this.putTime = putTime; + } + + /** **/ + public Date getIssueTime() { + return this.issueTime; + } + + /** **/ + public void setIssueTime(Date issueTime) { + this.issueTime = issueTime; + } + + /** **/ + public String getEnergyKind() { + return this.energyKind; + } + + /** **/ + public void setEnergyKind(String energyKind) { + this.energyKind = energyKind; + } + + /** **/ + public String getApplyArctic() { + return this.applyArctic; + } + + /** **/ + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + /** **/ + public String getStandEnName() { + return this.standEnName; + } + + /** **/ + public void setStandEnName(String standEnName) { + this.standEnName = standEnName; + } + + /** **/ + public String getStandName() { + return this.standName; + } + + /** **/ + public void setStandName(String standName) { + this.standName = standName; + } + + /** **/ + public String getStandCode() { + return this.standCode; + } + + /** **/ + public void setStandCode(String standCode) { + this.standCode = standCode; + } + + /** **/ + public String getClassifyCode() { + return this.classifyCode; + } + + /** **/ + public void setClassifyCode(String classifyCode) { + this.classifyCode = classifyCode; + } + + /** **/ + public String getStandSubclass() { + return this.standSubclass; + } + + /** **/ + public void setStandSubclass(String standSubclass) { + this.standSubclass = standSubclass; + } + + /** **/ + public String getStandGenera() { + return this.standGenera; + } + + /** **/ + public void setStandGenera(String standGenera) { + this.standGenera = standGenera; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String getStandStatusShow() { + return standStatusShow; + } + + public void setStandStatusShow(String standStatusShow) { + this.standStatusShow = standStatusShow; + } + + public String getApplyArcticShow() { + return applyArcticShow; + } + + public void setApplyArcticShow(String applyArcticShow) { + this.applyArcticShow = applyArcticShow; + } + + public String getEnergyKindShow() { + return energyKindShow; + } + + public void setEnergyKindShow(String energyKindShow) { + this.energyKindShow = energyKindShow; + } + + public String getStandGeneraShow() { + return standGeneraShow; + } + + public void setStandGeneraShow(String standGeneraShow) { + this.standGeneraShow = standGeneraShow; + } + + public String getStandSubclassShow() { + return standSubclassShow; + } + + public void setStandSubclassShow(String standSubclassShow) { + this.standSubclassShow = standSubclassShow; + } + + public List getStandFileList() { + return standFileList; + } + + public void setStandFileList(List standFileList) { + this.standFileList = standFileList; + } + + public String getCollectId() { + return collectId; + } + + public void setCollectId(String collectId) { + this.collectId = collectId; + } + + public String getResponsibleUnitShow() { + return responsibleUnitShow; + } + + public void setResponsibleUnitShow(String responsibleUnitShow) { + this.responsibleUnitShow = responsibleUnitShow; + } + + public String getMenuParentId() { + return menuParentId; + } + + public void setMenuParentId(String menuParentId) { + this.menuParentId = menuParentId; + } + + public int getUpReplaceNumFlag() { + return upReplaceNumFlag; + } + + public void setUpReplaceNumFlag(int upReplaceNumFlag) { + this.upReplaceNumFlag = upReplaceNumFlag; + } + + public int getUpNumFlag() { + return upNumFlag; + } + + public void setUpNumFlag(int upNumFlag) { + this.upNumFlag = upNumFlag; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/SearchInfoEO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/SearchInfoEO.java new file mode 100644 index 00000000..aad0e5e0 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/SearchInfoEO.java @@ -0,0 +1,192 @@ +package com.adc.da.search.entity; + +import com.adc.da.sys.common.BasePage; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +/** + * 功能:SAR_STANDARDS_INFO SarStandardsInfoEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ + +public class SearchInfoEO extends BasePage { + + //标准编号 文件号laws_number 标准编号STAND_CODE + private String standNumber; + //标准名称 文件名称laws_name standNAME + private String standName; + //标准英文名称 无 standEnName + private String standEnName; + //标准状态 文件状态laws_status standStatus + private String standState; + //标准文本 支持PDF、doc、docx文件《此项需要按照标准正文内容修改》 无 标准文本文件standFile + private String standFile; + //适用车型 适用车型 适用车型 + private String applyArctic; + //发布日期 发布日期 发布日期 + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date issueTime; + //实施日期 实施日期 实施日期 + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date putTime; + //起草人 无 有发布人和主要编织者putUser,citationUser + private String draftUser; + //起草单位 发布单位issueUnit 无,只有责任部门 + private String draftingUnit; + //代替标准号 代替文件号replaceLawsNum 代替标准号 + private String replaceStandNum; + //被代替标准号 无 被代替标准号 + private String replacedStandNum; + + //需求文档中还有 《文件名称》laws 中有 laws_name 标准库,企业标准库没有相关字段 + private String lawsName; + // 《动态标题》,标准库中找不到对应 都没有 + + //记录首页中的下拉选择的数据类别 + private String selectKey; + //记录首页搜索框中对应的数据 + private String selectValue; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date selectStartTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date selectEndTime; + + public String getStandNumber() { + return standNumber; + } + + public void setStandNumber(String standNumber) { + this.standNumber = standNumber; + } + + public String getStandName() { + return standName; + } + + public void setStandName(String standName) { + this.standName = standName; + } + + public String getStandEnName() { + return standEnName; + } + + public void setStandEnName(String standEnName) { + this.standEnName = standEnName; + } + + public String getStandState() { + return standState; + } + + public void setStandState(String standState) { + this.standState = standState; + } + + public String getStandFile() { + return standFile; + } + + public void setStandFile(String standFile) { + this.standFile = standFile; + } + + public String getApplyArctic() { + return applyArctic; + } + + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + public Date getIssueTime() { + return issueTime; + } + + public void setIssueTime(Date issueTime) { + this.issueTime = issueTime; + } + + public Date getPutTime() { + return putTime; + } + + public void setPutTime(Date putTime) { + this.putTime = putTime; + } + + public String getDraftUser() { + return draftUser; + } + + public void setDraftUser(String draftUser) { + this.draftUser = draftUser; + } + + public String getDraftingUnit() { + return draftingUnit; + } + + public void setDraftingUnit(String draftingUnit) { + this.draftingUnit = draftingUnit; + } + + public String getReplaceStandNum() { + return replaceStandNum; + } + + public void setReplaceStandNum(String replaceStandNum) { + this.replaceStandNum = replaceStandNum; + } + + public String getReplacedStandNum() { + return replacedStandNum; + } + + public void setReplacedStandNum(String replacedStandNum) { + this.replacedStandNum = replacedStandNum; + } + + public String getLawsName() { + return lawsName; + } + + public void setLawsName(String lawsName) { + this.lawsName = lawsName; + } + + public String getSelectKey() { + return selectKey; + } + + public void setSelectKey(String selectKey) { + this.selectKey = selectKey; + } + + public String getSelectValue() { + return selectValue; + } + + public void setSelectValue(String selectValue) { + this.selectValue = selectValue; + } + + public Date getSelectStartTime() { + return selectStartTime; + } + + public void setSelectStartTime(Date selectStartTime) { + this.selectStartTime = selectStartTime; + } + + public Date getSelectEndTime() { + return selectEndTime; + } + + public void setSelectEndTime(Date selectEndTime) { + this.selectEndTime = selectEndTime; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/SearchListDto.java b/adc-da-search/src/main/java/com/adc/da/search/entity/SearchListDto.java new file mode 100644 index 00000000..b269022d --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/SearchListDto.java @@ -0,0 +1,42 @@ +package com.adc.da.search.entity; + +import org.elasticsearch.index.query.BoolQueryBuilder; + +public class SearchListDto { + private BoolQueryBuilder boolQueryBuilder; + private int must; + private int should; + private int mustnot; + + public int getMustnot() { + return mustnot; + } + + public void setMustnot(int mustnot) { + this.mustnot = mustnot; + } + + public int getShould() { + return should; + } + + public void setShould(int should) { + this.should = should; + } + + public int getMust() { + return must; + } + + public void setMust(int must) { + this.must = must; + } + + public BoolQueryBuilder getBoolQueryBuilder() { + return boolQueryBuilder; + } + + public void setBoolQueryBuilder(BoolQueryBuilder boolQueryBuilder) { + this.boolQueryBuilder = boolQueryBuilder; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/SeniorSearchInfoEO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/SeniorSearchInfoEO.java new file mode 100644 index 00000000..eb9a62cc --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/SeniorSearchInfoEO.java @@ -0,0 +1,715 @@ +package com.adc.da.search.entity; + +import com.adc.da.sys.common.BasePage; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; +import java.util.List; + +/** + * 功能:SAR_STANDARDS_INFO SarStandardsInfoEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-03
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ + +public class SeniorSearchInfoEO extends BasePage { + private String standType; + //标准性质 + private String nature; + //国家地区 + private String country; + //标准类别 + private String standSort; + //标准,文件号 + private String numberShow; + //标准,文件名称 + private String nameShow; + //适用车型 + private String applyArctic; + //适用认证 + private String applyAuth; + //所属类别 + private String category; + //能源种类 + private String energyKind; + //采标程度 + private String adoptExtent; + //标准状态 + private String standState; + //发布日期 + private Date issueTime; + //标准大类 + private String bussBigClass; + //标准细类 + private String bussFineClass; + + //记录首页中的下拉选择的数据类别 + private String selectKey; + //记录首页搜索框中对应的数据 + private String selectValue; + //记录从哪个索引表中查数据 + private String selectIndex; + + //高级搜索 + //标准编号 + private String standNumber; + //标准年份 + private String standYear; + //标准英文名称 + private String standEnName; + //代替标准号 手动输入可以多个,用","隔开 + private String replaceStandNum; + //被代替标准号 + private String replacedStandNum; + //采用国际标准号 + private String interStandNum; + //实施日期 + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date putTime; + //新生产车实施日期 + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date newproductPutTime; + //在产车实施日期 + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date productPutTime; + //新定型车实施日期 + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date newcarPutTime; + //起草人 + private String draftUser; + //起草单位 + private String draftingUnit; + //关键词 + private String tags; + //内容摘要 + private String synopsis; + //责任部门 + private String responsibleUnit; + //发布单位 + private String issueUnit; + //分类代号 + private String classifyCode; + //实施年份 + private String putYear; + //首发日期 + private String firstPutTime; + //引用标准 + private String quoteStand; + //主要编制者 + private String citationUser; + //动态标题 + private String title; + //发布人 + private String pubUserName; + //发布单位 + private String pubOrgName; + //所属模块 + private String module; + //注册车 + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date registerPutTime; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date selectStartTime; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date selectEndTime; + + private String keywords; + private String resultKeyword; + //发布开始日期 + private Date issueTimeSt; + //发布结束日期 + private Date issueTimeEd; + //实施开始日期 + private Date putTimeSt; + //实施结束日期 + private Date putTimeEd; + + + // 条目搜索条件 + private String itemsName; + private String itemsNum; + private String parts; + + //新车型实施开始日期 + private Date newcarPutTimeSt; + //新车型实施结束日期 + private Date newcarPutTimeEd; + //在产实施开始日期 + private Date productPutTimeSt; + //在产实施结束日期 + private Date productPutTimeEd; + private List advanceSearchVOList; + private String advanceSearchVOStr; + private String CLLX; + private String CYSD; + private String CBCD; + private String ZRLX; + private String SYCLLX; + private String WSSFCY; + + private String ZQCBM; + private String stand_status; + private String isHigh; + + public String getNature() { + return nature; + } + + public void setNature(String nature) { + this.nature = nature; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getStandSort() { + return standSort; + } + + public void setStandSort(String standSort) { + this.standSort = standSort; + } + + public String getNumberShow() { + return numberShow; + } + + public void setNumberShow(String numberShow) { + this.numberShow = numberShow; + } + + public String getNameShow() { + return nameShow; + } + + public void setNameShow(String nameShow) { + this.nameShow = nameShow; + } + + public String getApplyArctic() { + return applyArctic; + } + + public void setApplyArctic(String applyArctic) { + this.applyArctic = applyArctic; + } + + public String getApplyAuth() { + return applyAuth; + } + + public void setApplyAuth(String applyAuth) { + this.applyAuth = applyAuth; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getEnergyKind() { + return energyKind; + } + + public void setEnergyKind(String energyKind) { + this.energyKind = energyKind; + } + + public String getAdoptExtent() { + return adoptExtent; + } + + public void setAdoptExtent(String adoptExtent) { + this.adoptExtent = adoptExtent; + } + + public String getStandState() { + return standState; + } + + public void setStandState(String standState) { + this.standState = standState; + } + + public Date getIssueTime() { + return issueTime; + } + + public void setIssueTime(Date issueTime) { + this.issueTime = issueTime; + } + + public String getSelectKey() { + return selectKey; + } + + public void setSelectKey(String selectKey) { + this.selectKey = selectKey; + } + + public String getSelectValue() { + return selectValue; + } + + public void setSelectValue(String selectValue) { + this.selectValue = selectValue; + } + + public Date getSelectStartTime() { + return selectStartTime; + } + + public void setSelectStartTime(Date selectStartTime) { + this.selectStartTime = selectStartTime; + } + + public Date getSelectEndTime() { + return selectEndTime; + } + + public void setSelectEndTime(Date selectEndTime) { + this.selectEndTime = selectEndTime; + } + + public String getSelectIndex() { + return selectIndex; + } + + public void setSelectIndex(String selectIndex) { + this.selectIndex = selectIndex; + } + + public String getBussBigClass() { + return bussBigClass; + } + + public void setBussBigClass(String bussBigClass) { + this.bussBigClass = bussBigClass; + } + + public String getBussFineClass() { + return bussFineClass; + } + + public void setBussFineClass(String bussFineClass) { + this.bussFineClass = bussFineClass; + } + + public String getStandNumber() { + return standNumber; + } + + public void setStandNumber(String standNumber) { + this.standNumber = standNumber; + } + + public String getStandYear() { + return standYear; + } + + public void setStandYear(String standYear) { + this.standYear = standYear; + } + + public String getStandEnName() { + return standEnName; + } + + public void setStandEnName(String standEnName) { + this.standEnName = standEnName; + } + + public String getReplaceStandNum() { + return replaceStandNum; + } + + public void setReplaceStandNum(String replaceStandNum) { + this.replaceStandNum = replaceStandNum; + } + + public String getReplacedStandNum() { + return replacedStandNum; + } + + public void setReplacedStandNum(String replacedStandNum) { + this.replacedStandNum = replacedStandNum; + } + + public String getInterStandNum() { + return interStandNum; + } + + public void setInterStandNum(String interStandNum) { + this.interStandNum = interStandNum; + } + + public Date getPutTime() { + return putTime; + } + + public void setPutTime(Date putTime) { + this.putTime = putTime; + } + + public Date getNewproductPutTime() { + return newproductPutTime; + } + + public void setNewproductPutTime(Date newproductPutTime) { + this.newproductPutTime = newproductPutTime; + } + + public Date getProductPutTime() { + return productPutTime; + } + + public void setProductPutTime(Date productPutTime) { + this.productPutTime = productPutTime; + } + + public Date getNewcarPutTime() { + return newcarPutTime; + } + + public void setNewcarPutTime(Date newcarPutTime) { + this.newcarPutTime = newcarPutTime; + } + + public String getDraftUser() { + return draftUser; + } + + public void setDraftUser(String draftUser) { + this.draftUser = draftUser; + } + + public String getDraftingUnit() { + return draftingUnit; + } + + public void setDraftingUnit(String draftingUnit) { + this.draftingUnit = draftingUnit; + } + + public String getTags() { + return tags; + } + + public void setTags(String tags) { + this.tags = tags; + } + + public String getSynopsis() { + return synopsis; + } + + public void setSynopsis(String synopsis) { + this.synopsis = synopsis; + } + + public String getResponsibleUnit() { + return responsibleUnit; + } + + public void setResponsibleUnit(String responsibleUnit) { + this.responsibleUnit = responsibleUnit; + } + + public String getClassifyCode() { + return classifyCode; + } + + public void setClassifyCode(String classifyCode) { + this.classifyCode = classifyCode; + } + + public String getPutYear() { + return putYear; + } + + public void setPutYear(String putYear) { + this.putYear = putYear; + } + + public String getFirstPutTime() { + return firstPutTime; + } + + public void setFirstPutTime(String firstPutTime) { + this.firstPutTime = firstPutTime; + } + + public String getQuoteStand() { + return quoteStand; + } + + public void setQuoteStand(String quoteStand) { + this.quoteStand = quoteStand; + } + + public String getCitationUser() { + return citationUser; + } + + public void setCitationUser(String citationUser) { + this.citationUser = citationUser; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getPubUserName() { + return pubUserName; + } + + public void setPubUserName(String pubUserName) { + this.pubUserName = pubUserName; + } + + public String getPubOrgName() { + return pubOrgName; + } + + public void setPubOrgName(String pubOrgName) { + this.pubOrgName = pubOrgName; + } + + public String getModule() { + return module; + } + + public void setModule(String module) { + this.module = module; + } + + public String getIssueUnit() { + return issueUnit; + } + + public void setIssueUnit(String issueUnit) { + this.issueUnit = issueUnit; + } + + public Date getRegisterPutTime() { + return registerPutTime; + } + + public void setRegisterPutTime(Date registerPutTime) { + this.registerPutTime = registerPutTime; + } + + public String getResultKeyword() { + return resultKeyword; + } + + public void setResultKeyword(String resultKeyword) { + this.resultKeyword = resultKeyword; + } + + public String getKeywords() { + return keywords; + } + + public void setKeywords(String keywords) { + this.keywords = keywords; + } + + public Date getIssueTimeSt() { + return issueTimeSt; + } + + public void setIssueTimeSt(Date issueTimeSt) { + this.issueTimeSt = issueTimeSt; + } + + public Date getIssueTimeEd() { + return issueTimeEd; + } + + public void setIssueTimeEd(Date issueTimeEd) { + this.issueTimeEd = issueTimeEd; + } + + public Date getPutTimeSt() { + return putTimeSt; + } + + public void setPutTimeSt(Date putTimeSt) { + this.putTimeSt = putTimeSt; + } + + public Date getPutTimeEd() { + return putTimeEd; + } + + public void setPutTimeEd(Date putTimeEd) { + this.putTimeEd = putTimeEd; + } + + public String getItemsName() { + return itemsName; + } + + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + + public String getItemsNum() { + return itemsNum; + } + + public void setItemsNum(String itemsNum) { + this.itemsNum = itemsNum; + } + + public String getParts() { + return parts; + } + + public void setParts(String parts) { + this.parts = parts; + } + + public Date getNewcarPutTimeSt() { + return newcarPutTimeSt; + } + + public void setNewcarPutTimeSt(Date newcarPutTimeSt) { + this.newcarPutTimeSt = newcarPutTimeSt; + } + + public Date getNewcarPutTimeEd() { + return newcarPutTimeEd; + } + + public void setNewcarPutTimeEd(Date newcarPutTimeEd) { + this.newcarPutTimeEd = newcarPutTimeEd; + } + + public Date getProductPutTimeSt() { + return productPutTimeSt; + } + + public void setProductPutTimeSt(Date productPutTimeSt) { + this.productPutTimeSt = productPutTimeSt; + } + + public Date getProductPutTimeEd() { + return productPutTimeEd; + } + + public void setProductPutTimeEd(Date productPutTimeEd) { + this.productPutTimeEd = productPutTimeEd; + } + + public String getStandType() { + return standType; + } + + public void setStandType(String standType) { + this.standType = standType; + } + + public List getAdvanceSearchVOList() { + return advanceSearchVOList; + } + + public void setAdvanceSearchVOList(List advanceSearchVOList) { + this.advanceSearchVOList = advanceSearchVOList; + } + + public String getCLLX() { + return CLLX; + } + + public void setCLLX(String CLLX) { + this.CLLX = CLLX; + } + + public String getCYSD() { + return CYSD; + } + + public void setCYSD(String CYSD) { + this.CYSD = CYSD; + } + + public String getCBCD() { + return CBCD; + } + + public void setCBCD(String CBCD) { + this.CBCD = CBCD; + } + + public String getZRLX() { + return ZRLX; + } + + public void setZRLX(String ZRLX) { + this.ZRLX = ZRLX; + } + + public String getSYCLLX() { + return SYCLLX; + } + + public void setSYCLLX(String SYCLLX) { + this.SYCLLX = SYCLLX; + } + + public String getWSSFCY() { + return WSSFCY; + } + + public void setWSSFCY(String WSSFCY) { + this.WSSFCY = WSSFCY; + } + + public String getAdvanceSearchVOStr() { + return advanceSearchVOStr; + } + + public void setAdvanceSearchVOStr(String advanceSearchVOStr) { + this.advanceSearchVOStr = advanceSearchVOStr; + } + + public String getStand_status() { + return stand_status; + } + + public void setStand_status(String stand_status) { + this.stand_status = stand_status; + } + + public String getZQCBM() { + return ZQCBM; + } + + public void setZQCBM(String ZQCBM) { + this.ZQCBM = ZQCBM; + } + + public String getIsHigh() { + return isHigh; + } + + public void setIsHigh(String isHigh) { + this.isHigh = isHigh; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/entity/StandLawsEO.java b/adc-da-search/src/main/java/com/adc/da/search/entity/StandLawsEO.java new file mode 100644 index 00000000..eba8a648 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/entity/StandLawsEO.java @@ -0,0 +1,926 @@ +package com.adc.da.search.entity; + +import com.adc.da.base.entity.BaseEntity; + +import java.util.Date; + +/** + * 功能:PART_PRODUCT PartProductEOEntity
    + * 作者:code generator
    + * 日期: 2018-11-22
    + * 版权所有:

    + */ +public class StandLawsEO extends BaseEntity { + private String id; + private String stand_type; + private String laws_type; + private String numbershow; + private String numbershowSplit; + private String standNumber; + private String nameshow; + private String nameshowSplit; + private String standEnName; + private String nature; + private String natureShow; + private String country; + private String countryShow; + private String stand_sort; + private String standSortShow; + private String apply_arctic; + private String applyArcticShow; + private String standYear; + private String apply_auth; + private String applyAuthShow; + private String category; + private String categoryShow; + private String energy_kind; + private String energyKindShow; + private String adopt_extent; + private String adoptExtentShow; + private String statecode; + private String statecodeShow; + private Date issue_time; + private String issueTimeStr; + private Date put_time; + private String putTimeStr; + private String draft_user; + private String drafting_unit; + private String replace_stand_num; + private String replaced_stand_num; + private Integer valid_flag; + private String type; + private String standstateshow; + private String content; + + private String lawsstateshow; + private String replace_laws_num; + + private String bussBigClass; + private String bussBigClassShow; + private String bussFineClassShow; + private String bussFineClass; + private String classifyCode; + private String putYear; + private String firstPutTime; + private String quoteStand; + private String citationUser; + private String responsibleUnit; + private String responsibleUnitShow; + private String interStandNum; + private Date newproductPutTime; + //在产车实施日期 + private Date productPutTime; + //新定型车实施日期 + private Date newcarPutTime; + private Date registerPutTime; + private String standTag; + private String synopsis; + //发布单位 + private String issueUnit; + //动态信息 + private String module; + private String moduleName; + private String title; + private String pubUser; + private String pubUserShow; + private String pubOrg; + private String pubOrgShow; + private String msgContent; + + //去掉编号中空格 + private String numberExpNull; + + // 条目信息 + private String itemsName; + private String itemsNum; + private String standId; + private String termsConditions; //条款要求 + private String mainPointImplementation; //实施要点 + private String parts; + private Date tackTime; + private String remarks; + private String itemsType; + // 新加属性字段 + private String issueUnitShow;//发布单位 + private String citeStand; + private String citedStand; + private String gkglbm; + private String gkglbmShow; + private String gzzxx; + private String cysd; + private String zrlx; + private String zrlxShow; + private String yqlx; + private String yqlxShow; + private String gxhbq; + private String gxhbqShow; + private String xgbm; + private String xgbmShow; + private String svpps; + private String fo; + private String foShow; + private String xmpgry; + private String xmpgryShow; + private String fgwhr; + + public String getApply_arctic() { + return apply_arctic; + } + + public void setApply_arctic(String apply_arctic) { + this.apply_arctic = apply_arctic; + } + + public String getEnergy_kind() { + return energy_kind; + } + + public void setEnergy_kind(String energy_kind) { + this.energy_kind = energy_kind; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Date getIssue_time() { + return issue_time; + } + + public void setIssue_time(Date issue_time) { + this.issue_time = issue_time; + } + + public String getNameshow() { + return nameshow; + } + + public void setNameshow(String nameshow) { + this.nameshow = nameshow; + } + + public String getNumbershow() { + return numbershow; + } + + public void setNumbershow(String numbershow) { + this.numbershow = numbershow; + } + + public Date getPut_time() { + return put_time; + } + + public void setPut_time(Date put_time) { + this.put_time = put_time; + } + + public String getReplace_stand_num() { + return replace_stand_num; + } + + public void setReplace_stand_num(String replace_stand_num) { + this.replace_stand_num = replace_stand_num; + } + + public String getReplaced_stand_num() { + return replaced_stand_num; + } + + public void setReplaced_stand_num(String replaced_stand_num) { + this.replaced_stand_num = replaced_stand_num; + } + + public String getStandstateshow() { + return standstateshow; + } + + public void setStandstateshow(String standstateshow) { + this.standstateshow = standstateshow; + } + + public String getStatecode() { + return statecode; + } + + public void setStatecode(String statecode) { + this.statecode = statecode; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Integer getValid_flag() { + return valid_flag; + } + + public void setValid_flag(Integer valid_flag) { + this.valid_flag = valid_flag; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getStand_type() { + return stand_type; + } + + public void setStand_type(String stand_type) { + this.stand_type = stand_type; + } + + public String getLaws_type() { + return laws_type; + } + + public void setLaws_type(String laws_type) { + this.laws_type = laws_type; + } + + public String getNature() { + return nature; + } + + public void setNature(String nature) { + this.nature = nature; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getStand_sort() { + return stand_sort; + } + + public void setStand_sort(String stand_sort) { + this.stand_sort = stand_sort; + } + + public String getApply_auth() { + return apply_auth; + } + + public void setApply_auth(String apply_auth) { + this.apply_auth = apply_auth; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getAdopt_extent() { + return adopt_extent; + } + + public void setAdopt_extent(String adopt_extent) { + this.adopt_extent = adopt_extent; + } + + public String getDraft_user() { + return draft_user; + } + + public void setDraft_user(String draft_user) { + this.draft_user = draft_user; + } + + public String getDrafting_unit() { + return drafting_unit; + } + + public void setDrafting_unit(String drafting_unit) { + this.drafting_unit = drafting_unit; + } + + public String getLawsstateshow() { + return lawsstateshow; + } + + public void setLawsstateshow(String lawsstateshow) { + this.lawsstateshow = lawsstateshow; + } + + public String getReplace_laws_num() { + return replace_laws_num; + } + + public void setReplace_laws_num(String replace_laws_num) { + this.replace_laws_num = replace_laws_num; + } + + public String getBussBigClass() { + return bussBigClass; + } + + public void setBussBigClass(String bussBigClass) { + this.bussBigClass = bussBigClass; + } + + public String getBussFineClass() { + return bussFineClass; + } + + public void setBussFineClass(String bussFineClass) { + this.bussFineClass = bussFineClass; + } + + public String getClassifyCode() { + return classifyCode; + } + + public void setClassifyCode(String classifyCode) { + this.classifyCode = classifyCode; + } + + public String getPutYear() { + return putYear; + } + + public void setPutYear(String putYear) { + this.putYear = putYear; + } + + public String getFirstPutTime() { + return firstPutTime; + } + + public void setFirstPutTime(String firstPutTime) { + this.firstPutTime = firstPutTime; + } + + public String getQuoteStand() { + return quoteStand; + } + + public void setQuoteStand(String quoteStand) { + this.quoteStand = quoteStand; + } + + public String getCitationUser() { + return citationUser; + } + + public void setCitationUser(String citationUser) { + this.citationUser = citationUser; + } + + public String getStandEnName() { + return standEnName; + } + + public void setStandEnName(String standEnName) { + this.standEnName = standEnName; + } + + public String getResponsibleUnit() { + return responsibleUnit; + } + + public void setResponsibleUnit(String responsibleUnit) { + this.responsibleUnit = responsibleUnit; + } + + public String getInterStandNum() { + return interStandNum; + } + + public void setInterStandNum(String interStandNum) { + this.interStandNum = interStandNum; + } + + public Date getNewproductPutTime() { + return newproductPutTime; + } + + public void setNewproductPutTime(Date newproductPutTime) { + this.newproductPutTime = newproductPutTime; + } + + public Date getProductPutTime() { + return productPutTime; + } + + public void setProductPutTime(Date productPutTime) { + this.productPutTime = productPutTime; + } + + public Date getNewcarPutTime() { + return newcarPutTime; + } + + public void setNewcarPutTime(Date newcarPutTime) { + this.newcarPutTime = newcarPutTime; + } + + public String getSynopsis() { + return synopsis; + } + + public void setSynopsis(String synopsis) { + this.synopsis = synopsis; + } + + public String getIssueUnit() { + return issueUnit; + } + + public void setIssueUnit(String issueUnit) { + this.issueUnit = issueUnit; + } + + public String getNatureShow() { + return natureShow; + } + + public void setNatureShow(String natureShow) { + this.natureShow = natureShow; + } + + public String getCountryShow() { + return countryShow; + } + + public void setCountryShow(String countryShow) { + this.countryShow = countryShow; + } + + public String getStandSortShow() { + return standSortShow; + } + + public void setStandSortShow(String standSortShow) { + this.standSortShow = standSortShow; + } + + public String getApplyArcticShow() { + return applyArcticShow; + } + + public void setApplyArcticShow(String applyArcticShow) { + this.applyArcticShow = applyArcticShow; + } + + public String getApplyAuthShow() { + return applyAuthShow; + } + + public void setApplyAuthShow(String applyAuthShow) { + this.applyAuthShow = applyAuthShow; + } + + public String getCategoryShow() { + return categoryShow; + } + + public void setCategoryShow(String categoryShow) { + this.categoryShow = categoryShow; + } + + public String getEnergyKindShow() { + return energyKindShow; + } + + public void setEnergyKindShow(String energyKindShow) { + this.energyKindShow = energyKindShow; + } + + public String getAdoptExtentShow() { + return adoptExtentShow; + } + + public void setAdoptExtentShow(String adoptExtentShow) { + this.adoptExtentShow = adoptExtentShow; + } + + public String getStatecodeShow() { + return statecodeShow; + } + + public void setStatecodeShow(String statecodeShow) { + this.statecodeShow = statecodeShow; + } + + public String getIssueTimeStr() { + return issueTimeStr; + } + + public void setIssueTimeStr(String issueTimeStr) { + this.issueTimeStr = issueTimeStr; + } + + public String getPutTimeStr() { + return putTimeStr; + } + + public void setPutTimeStr(String putTimeStr) { + this.putTimeStr = putTimeStr; + } + + public String getBussBigClassShow() { + return bussBigClassShow; + } + + public void setBussBigClassShow(String bussBigClassShow) { + this.bussBigClassShow = bussBigClassShow; + } + + public String getBussFineClassShow() { + return bussFineClassShow; + } + + public void setBussFineClassShow(String bussFineClassShow) { + this.bussFineClassShow = bussFineClassShow; + } + + public String getModule() { + return module; + } + + public void setModule(String module) { + this.module = module; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getPubUser() { + return pubUser; + } + + public void setPubUser(String pubUser) { + this.pubUser = pubUser; + } + + public String getPubUserShow() { + return pubUserShow; + } + + public void setPubUserShow(String pubUserShow) { + this.pubUserShow = pubUserShow; + } + + public String getPubOrg() { + return pubOrg; + } + + public void setPubOrg(String pubOrg) { + this.pubOrg = pubOrg; + } + + public String getPubOrgShow() { + return pubOrgShow; + } + + public void setPubOrgShow(String pubOrgShow) { + this.pubOrgShow = pubOrgShow; + } + + + public String getModuleName() { + return moduleName; + } + + public void setModuleName(String moduleName) { + this.moduleName = moduleName; + } + + public String getStandYear() { + return standYear; + } + + public void setStandYear(String standYear) { + this.standYear = standYear; + } + + public String getResponsibleUnitShow() { + return responsibleUnitShow; + } + + public void setResponsibleUnitShow(String responsibleUnitShow) { + this.responsibleUnitShow = responsibleUnitShow; + } + + public String getStandNumber() { + return standNumber; + } + + public void setStandNumber(String standNumber) { + this.standNumber = standNumber; + } + + public Date getRegisterPutTime() { + return registerPutTime; + } + + public void setRegisterPutTime(Date registerPutTime) { + this.registerPutTime = registerPutTime; + } + + public String getNumberExpNull() { + return numberExpNull; + } + + public void setNumberExpNull(String numberExpNull) { + this.numberExpNull = numberExpNull; + } + + public String getItemsName() { + return itemsName; + } + + public void setItemsName(String itemsName) { + this.itemsName = itemsName; + } + + public String getItemsNum() { + return itemsNum; + } + + public void setItemsNum(String itemsNum) { + this.itemsNum = itemsNum; + } + + public String getStandId() { + return standId; + } + + public void setStandId(String standId) { + this.standId = standId; + } + + public String getTermsConditions() { + return termsConditions; + } + + public void setTermsConditions(String termsConditions) { + this.termsConditions = termsConditions; + } + + public String getMainPointImplementation() { + return mainPointImplementation; + } + + public void setMainPointImplementation(String mainPointImplementation) { + this.mainPointImplementation = mainPointImplementation; + } + + public String getParts() { + return parts; + } + + public void setParts(String parts) { + this.parts = parts; + } + + public Date getTackTime() { + return tackTime; + } + + public void setTackTime(Date tackTime) { + this.tackTime = tackTime; + } + + public String getRemarks() { + return remarks; + } + + public void setRemarks(String remarks) { + this.remarks = remarks; + } + + public String getItemsType() { + return itemsType; + } + + public void setItemsType(String itemsType) { + this.itemsType = itemsType; + } + + public String getNameshowSplit() { + return nameshowSplit; + } + + public void setNameshowSplit(String nameshowSplit) { + this.nameshowSplit = nameshowSplit; + } + + public String getNumbershowSplit() { + return numbershowSplit; + } + + public void setNumbershowSplit(String numbershowSplit) { + this.numbershowSplit = numbershowSplit; + } + + public String getMsgContent() { + return msgContent; + } + + public void setMsgContent(String msgContent) { + this.msgContent = msgContent; + } + + public String getStandTag() { + return standTag; + } + + public void setStandTag(String standTag) { + this.standTag = standTag; + } + + public String getIssueUnitShow() { + return issueUnitShow; + } + + public void setIssueUnitShow(String issueUnitShow) { + this.issueUnitShow = issueUnitShow; + } + + public String getCiteStand() { + return citeStand; + } + + public void setCiteStand(String citeStand) { + this.citeStand = citeStand; + } + + public String getCitedStand() { + return citedStand; + } + + public void setCitedStand(String citedStand) { + this.citedStand = citedStand; + } + + public String getGkglbm() { + return gkglbm; + } + + public void setGkglbm(String gkglbm) { + this.gkglbm = gkglbm; + } + + public String getGkglbmShow() { + return gkglbmShow; + } + + public void setGkglbmShow(String gkglbmShow) { + this.gkglbmShow = gkglbmShow; + } + + public String getGzzxx() { + return gzzxx; + } + + public void setGzzxx(String gzzxx) { + this.gzzxx = gzzxx; + } + + public String getCysd() { + return cysd; + } + + public void setCysd(String cysd) { + this.cysd = cysd; + } + + public String getZrlx() { + return zrlx; + } + + public void setZrlx(String zrlx) { + this.zrlx = zrlx; + } + + public String getZrlxShow() { + return zrlxShow; + } + + public void setZrlxShow(String zrlxShow) { + this.zrlxShow = zrlxShow; + } + + public String getYqlx() { + return yqlx; + } + + public void setYqlx(String yqlx) { + this.yqlx = yqlx; + } + + public String getYqlxShow() { + return yqlxShow; + } + + public void setYqlxShow(String yqlxShow) { + this.yqlxShow = yqlxShow; + } + + public String getGxhbq() { + return gxhbq; + } + + public void setGxhbq(String gxhbq) { + this.gxhbq = gxhbq; + } + + public String getGxhbqShow() { + return gxhbqShow; + } + + public void setGxhbqShow(String gxhbqShow) { + this.gxhbqShow = gxhbqShow; + } + + public String getXgbm() { + return xgbm; + } + + public void setXgbm(String xgbm) { + this.xgbm = xgbm; + } + + public String getXgbmShow() { + return xgbmShow; + } + + public void setXgbmShow(String xgbmShow) { + this.xgbmShow = xgbmShow; + } + + public String getSvpps() { + return svpps; + } + + public void setSvpps(String svpps) { + this.svpps = svpps; + } + + public String getFo() { + return fo; + } + + public void setFo(String fo) { + this.fo = fo; + } + + public String getFoShow() { + return foShow; + } + + public void setFoShow(String foShow) { + this.foShow = foShow; + } + + public String getXmpgry() { + return xmpgry; + } + + public void setXmpgry(String xmpgry) { + this.xmpgry = xmpgry; + } + + public String getXmpgryShow() { + return xmpgryShow; + } + + public void setXmpgryShow(String xmpgryShow) { + this.xmpgryShow = xmpgryShow; + } + + public String getFgwhr() { + return fgwhr; + } + + public void setFgwhr(String fgwhr) { + this.fgwhr = fgwhr; + } +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/page/PartProductEOPage.java b/adc-da-search/src/main/java/com/adc/da/search/page/PartProductEOPage.java new file mode 100644 index 00000000..d965d4a1 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/page/PartProductEOPage.java @@ -0,0 +1,358 @@ +package com.adc.da.search.page; + +import com.adc.da.sys.common.BasePage; + +import java.util.Date; + +/** + * 功能:PART_PRODUCT PartProductEOPage
    + * 作者:code generator
    + * 日期: 2018-08-22
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class PartProductEOPage extends BasePage { + + private String id; + private String idOperator = "="; + private String corpId; + private String corpIdOperator = "="; + private String partType; + private String partTypeOperator = "="; + private String partName; + private String partNameOperator = "="; + private String partNummber; + private String partNummberOperator = "="; + private String riskGrade; + private String riskGradeOperator = "="; + private String suitModel; + private String suitModelOperator = "="; + private String motoModel; + private String motoModelOperator = "="; + private String motoType; + private String motoTypeOperator = "="; + private String oemCode; + private String oemCodeOperator = "="; + private String certNumber; + private String certNumberOperator = "="; + private String delFlag; + private String delFlagOperator = "="; + private String insertTime; + private String insertTime1; + private String insertTime2; + private String insertTimeOperator = "="; + private String updateTime; + private String updateTime1; + private String updateTime2; + private String updateTimeOperator = "="; + private String corpModel; + private String corpModelOperator = "="; + private String partSup; + private String partSupOperator = "="; + private String qrCodeStatus; + private String qrCodeStatusOperator = "="; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getIdOperator() { + return this.idOperator; + } + + public void setIdOperator(String idOperator) { + this.idOperator = idOperator; + } + + public String getCorpId() { + return this.corpId; + } + + public void setCorpId(String corpId) { + this.corpId = corpId; + } + + public String getCorpIdOperator() { + return this.corpIdOperator; + } + + public void setCorpIdOperator(String corpIdOperator) { + this.corpIdOperator = corpIdOperator; + } + + public String getPartType() { + return this.partType; + } + + public void setPartType(String partType) { + this.partType = partType; + } + + public String getPartTypeOperator() { + return this.partTypeOperator; + } + + public void setPartTypeOperator(String partTypeOperator) { + this.partTypeOperator = partTypeOperator; + } + + public String getPartName() { + return this.partName; + } + + public void setPartName(String partName) { + this.partName = partName; + } + + public String getPartNameOperator() { + return this.partNameOperator; + } + + public void setPartNameOperator(String partNameOperator) { + this.partNameOperator = partNameOperator; + } + + public String getPartNummber() { + return this.partNummber; + } + + public void setPartNummber(String partNummber) { + this.partNummber = partNummber; + } + + public String getPartNummberOperator() { + return this.partNummberOperator; + } + + public void setPartNummberOperator(String partNummberOperator) { + this.partNummberOperator = partNummberOperator; + } + + public String getRiskGrade() { + return this.riskGrade; + } + + public void setRiskGrade(String riskGrade) { + this.riskGrade = riskGrade; + } + + public String getRiskGradeOperator() { + return this.riskGradeOperator; + } + + public void setRiskGradeOperator(String riskGradeOperator) { + this.riskGradeOperator = riskGradeOperator; + } + + public String getSuitModel() { + return this.suitModel; + } + + public void setSuitModel(String suitModel) { + this.suitModel = suitModel; + } + + public String getSuitModelOperator() { + return this.suitModelOperator; + } + + public void setSuitModelOperator(String suitModelOperator) { + this.suitModelOperator = suitModelOperator; + } + + public String getMotoModel() { + return this.motoModel; + } + + public void setMotoModel(String motoModel) { + this.motoModel = motoModel; + } + + public String getMotoModelOperator() { + return this.motoModelOperator; + } + + public void setMotoModelOperator(String motoModelOperator) { + this.motoModelOperator = motoModelOperator; + } + + public String getMotoType() { + return this.motoType; + } + + public void setMotoType(String motoType) { + this.motoType = motoType; + } + + public String getMotoTypeOperator() { + return this.motoTypeOperator; + } + + public void setMotoTypeOperator(String motoTypeOperator) { + this.motoTypeOperator = motoTypeOperator; + } + + public String getOemCode() { + return this.oemCode; + } + + public void setOemCode(String oemCode) { + this.oemCode = oemCode; + } + + public String getOemCodeOperator() { + return this.oemCodeOperator; + } + + public void setOemCodeOperator(String oemCodeOperator) { + this.oemCodeOperator = oemCodeOperator; + } + + public String getCertNumber() { + return this.certNumber; + } + + public void setCertNumber(String certNumber) { + this.certNumber = certNumber; + } + + public String getCertNumberOperator() { + return this.certNumberOperator; + } + + public void setCertNumberOperator(String certNumberOperator) { + this.certNumberOperator = certNumberOperator; + } + + public String getDelFlag() { + return this.delFlag; + } + + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + public String getDelFlagOperator() { + return this.delFlagOperator; + } + + public void setDelFlagOperator(String delFlagOperator) { + this.delFlagOperator = delFlagOperator; + } + + public String getInsertTime() { + return this.insertTime; + } + + public void setInsertTime(String insertTime) { + this.insertTime = insertTime; + } + + public String getInsertTime1() { + return this.insertTime1; + } + + public void setInsertTime1(String insertTime1) { + this.insertTime1 = insertTime1; + } + + public String getInsertTime2() { + return this.insertTime2; + } + + public void setInsertTime2(String insertTime2) { + this.insertTime2 = insertTime2; + } + + public String getInsertTimeOperator() { + return this.insertTimeOperator; + } + + public void setInsertTimeOperator(String insertTimeOperator) { + this.insertTimeOperator = insertTimeOperator; + } + + public String getUpdateTime() { + return this.updateTime; + } + + public void setUpdateTime(String updateTime) { + this.updateTime = updateTime; + } + + public String getUpdateTime1() { + return this.updateTime1; + } + + public void setUpdateTime1(String updateTime1) { + this.updateTime1 = updateTime1; + } + + public String getUpdateTime2() { + return this.updateTime2; + } + + public void setUpdateTime2(String updateTime2) { + this.updateTime2 = updateTime2; + } + + public String getUpdateTimeOperator() { + return this.updateTimeOperator; + } + + public void setUpdateTimeOperator(String updateTimeOperator) { + this.updateTimeOperator = updateTimeOperator; + } + + public String getCorpModel() { + return this.corpModel; + } + + public void setCorpModel(String corpModel) { + this.corpModel = corpModel; + } + + public String getCorpModelOperator() { + return this.corpModelOperator; + } + + public void setCorpModelOperator(String corpModelOperator) { + this.corpModelOperator = corpModelOperator; + } + + public String getPartSup() { + return this.partSup; + } + + public void setPartSup(String partSup) { + this.partSup = partSup; + } + + public String getPartSupOperator() { + return this.partSupOperator; + } + + public void setPartSupOperator(String partSupOperator) { + this.partSupOperator = partSupOperator; + } + + public String getQrCodeStatus() { + return this.qrCodeStatus; + } + + public void setQrCodeStatus(String qrCodeStatus) { + this.qrCodeStatus = qrCodeStatus; + } + + public String getQrCodeStatusOperator() { + return this.qrCodeStatusOperator; + } + + public void setQrCodeStatusOperator(String qrCodeStatusOperator) { + this.qrCodeStatusOperator = qrCodeStatusOperator; + } + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/ElasticsearchService.java b/adc-da-search/src/main/java/com/adc/da/search/service/ElasticsearchService.java new file mode 100644 index 00000000..07c74b31 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/service/ElasticsearchService.java @@ -0,0 +1,270 @@ +package com.adc.da.search.service; + +import com.adc.da.search.entity.EsPage; +import com.alibaba.fastjson.JSONObject; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.common.xcontent.XContentBuilder; + +import java.util.List; +import java.util.Map; + +public interface ElasticsearchService { + + /** + * Elasticsearch 创建索引定义 + * @param index 要创建的索引 + * @return true表示创建成功,false表示创建失败 + * @author gaoyan + * date 2018-08-27 + */ + boolean createIndex(String index, XContentBuilder mapping); + + /** + * Elasticsearch 删除索引定义 + * @param index 要删除的索引 + * @return true表示删除成功,false表示删除失败 + * @author gaoyan + * date 2018-08-27 + */ + boolean deleteIndex(String index); + + /** + * Elasticsearch 判断索引是否存在定义 + * @param index 要判断的索引名称 + * @return true表示该索引存在,false表示该索引不存在 + * @author gaoyan + * date 2018-08-28 + */ + boolean isIndexExist(String index); + + /** + * 指定ID数据添加接口定义, + * @param jsonObject 要增加的数据 + * @param index 索引,类似数据库 + * @param type 类型,类似表 (自6.0改版以后,一个索引里只允许有一种类型, + * 如果索引中已经有类型,增加数据过程中,添加其他类型会报错) + * @param id 数据ID + * @return 返回创建的文档的id + * @author gaoyan + * date 2018-08-28 + */ + String addData(JSONObject jsonObject, String index, String type, String id); + + String addDataForMap(Map attrInfoMap, String index, String type, String id); + + /** + * 不指定ID数据添加接口定义, + * @param jsonObject 要增加的数据 + * @param index 索引,类似数据库 + * @param type 类型,类似表 (自6.0改版以后,一个索引里只允许有一种类型, + * 如果索引中已经有类型,增加数据过程中,添加其他类型会报错) + * @return 返回创建的文档的id + * @author gaoyan + * date 2018-08-28 + */ + String addData(JSONObject jsonObject, String index, String type); + + /** + * 通过ID删除数据定义 + * + * @param index 索引,类似数据库 + * @param type 类型,类似表 + * @param id 数据ID + * @return 正确删除返回DELETED + * @author gaoyan + * date 2018-08-28 + */ + String deleteDataById(String index, String type, String id); + + /** + * Elasticsearch 删除某个index所有的文档接口定义 + * @param index 要插入的索引 + * @return 删除返回的结果 + * @author gaoyan + * date 2018-08-27 + */ + long deleteAllDataOfIndex(String index); + + /** + * 通过ID 更新数据定义 + * + * @param jsonObject 要更新的数据 + * @param index 索引,类似数据库 + * @param type 类型,类似表 + * @param id 数据ID + * @return 如果正确删除返回 UPDATED + * @author gaoyan + * date 2018-08-28 + */ + String updateDataById(JSONObject jsonObject, String index, String type, String id); + + String updateDataByIdForMap(Map attrInfoMap, String index, String type, String id); + + /** + * 通过ID获取数据定义 + * + * @param index 索引,类似数据库 + * @param type 类型,类似表 + * @param id 数据ID + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @return + * @author gaoyan + * date 2018-08-28 + */ + Map searchDataById(String index, String type, String id, String fields); + + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称,可传入多个type逗号分隔 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + List> searchListData(String index, String type, String fields, String matchStr); + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称,可传入多个type逗号分隔 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + List> searchListData(String index, String type, String fields, String sortField, boolean matchPhrase, String matchStr); + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称,可传入多个type逗号分隔 + * @param size 文档大小限制 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param highlightField 高亮字段 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + List> searchListData(String index, String type, Integer size, String fields, String sortField, boolean matchPhrase, String highlightField, String matchStr); + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称,可传入多个type逗号分隔 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param size 文档大小限制 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param highlightField 高亮字段 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + List> searchListData(String index, String type, long startTime, long endTime, Integer size, String fields, String sortField, boolean matchPhrase, String highlightField, String matchStr); + + /** + * 使用分词查询,并分页 + * + * @param index 索引名称 + * @param type 类型名称,可传入多个type逗号分隔 + * @param currentPage 当前页 + * @param pageSize 每页显示条数 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param highlightField 高亮字段 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + EsPage searchDataPage(String index, String type, int currentPage, int pageSize, long startTime, long endTime, String fields, String sortField, boolean matchPhrase, String highlightField, String matchStr); + + /** + * 高亮结果集 特殊处理 + * + * @param searchResponse + * @param highlightField + */ + List> setSearchResponse(SearchResponse searchResponse, String highlightField); + + /** + * Elasticsearch 批量插入接口定义 + * @param index 要插入的索引 + * @param type 要插入数据对应的type + * @param list 插入数据的list + * @return + * @author gaoyan + * date 2018-08-27 + */ + String addBulkData(String index, String type, List list); + + /** + * 默认查询全部数据,并按照对应的字段排序,方法内写了部分基础查询,主要是针对单个field但条件 + * 具体业务查询可参考方法体中注释代码 + * @param index index名称,可以从多个index中查询,所以这里定义成String数组 + * @param type type名称,可以从多种type中查询,所以这里定义成String数组 + * @param sortfield 需要排序的字段, + * @return + * @author gaoyan + * date 2018-08-28 + */ + List> searchListDataAndSort(String[] index, String[] type, String sortfield, String[] fields); + + + /** + * 涉及组合查询条件主要涉及到boolQueryBuilder的使用 + * @param index index名称,可以从多个index中查询,所以这里定义成String数组 + * @param type type名称,可以从多种type中查询,所以这里定义成String数组 + * @param sortfield 需要排序的字段, + * @return + * @author gaoyan + * date 2018-08-28 + */ + List> searchListDataUnit(String[] index, String[] type, String sortfield, String[] fields); + + + /** + * 涉及组合查询条件主要涉及到聚合函数的使用,主要是分组求平均值,依靠平均值排序 terms + * @param index index名称,可以从多个index中查询,所以这里定义成String数组 + * @param type type名称,可以从多种type中查询,所以这里定义成String数组 + * @return + * @author gaoyan + * date 2018-08-28 + */ + List> searchListDataGroup(String[] index, String[] type); + + + /** + * 涉及组合查询条件主要涉及到聚合函数的使用,较为复杂,按照年龄阶段分组后,再安装性别分组,求balance平均值 ranges + * @param index index名称,可以从多个index中查询,所以这里定义成String数组 + * @param type type名称,可以从多种type中查询,所以这里定义成String数组 + * @return + * @author gaoyan + * date 2018-08-29 + */ + List> searchListDataGroupComplex(String[] index, String[] type); + + + + /** + * 查询结果集searchResponse装换成List形式 + * @param searchResponse 需要转换的数据 + * @return + * @author gaoyan + * date 2018-08-28 + */ + List> SearchResponseToList(SearchResponse searchResponse); + + + + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java b/adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java new file mode 100644 index 00000000..9e569ff4 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java @@ -0,0 +1,30 @@ +package com.adc.da.search.service; + +import com.adc.da.search.entity.SeniorSearchInfoEO; +import org.elasticsearch.action.search.SearchResponse; + +import java.util.List; +import java.util.Map; + +public interface SearchCenterService { + + List> searchSarBykey(SeniorSearchInfoEO searchInfoEO) throws Exception; + + /** + * 查询结果集searchResponse装换成List形式 + * @param searchResponse 需要转换的数据 + * @return + * @author gaoyan + * date 2018-08-28 + */ + List> SearchResponseToList(SearchResponse searchResponse); + + Map selectGroupdata(SeniorSearchInfoEO searchInfoEO); + + String [] searchIdToImport(SeniorSearchInfoEO searchInfoEO); + + List> searchSarBykeyAndHighLight(SeniorSearchInfoEO searchInfoEO) throws Exception; + + List> searchSarBykeyAndHighLightNumber(SeniorSearchInfoEO searchInfoEO) throws Exception; + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/StandLawsSearchService.java b/adc-da-search/src/main/java/com/adc/da/search/service/StandLawsSearchService.java new file mode 100644 index 00000000..8c99c429 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/service/StandLawsSearchService.java @@ -0,0 +1,19 @@ +package com.adc.da.search.service; + + +import com.adc.da.search.entity.StandLawsEO; + +import java.util.Map; + +public interface StandLawsSearchService { + + String addStandLawsSearch(StandLawsEO standLawsEO); + + String addStandLawsSearchForMap(Map attrInfoMap); + +// String updateStandLawsSearch(StandLawsEO standLawsEO); + + String updateStandLawsSearchForMap(Map attrInfoMap); + + String deleteStandLawsSearch(StandLawsEO standLawsEO); +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/impl/ElasticsearchServiceImpl.java b/adc-da-search/src/main/java/com/adc/da/search/service/impl/ElasticsearchServiceImpl.java new file mode 100644 index 00000000..8cde8438 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/service/impl/ElasticsearchServiceImpl.java @@ -0,0 +1,748 @@ +package com.adc.da.search.service.impl; + +import com.adc.da.search.entity.EsPage; +import com.adc.da.search.service.ElasticsearchService; +import com.adc.da.util.utils.StringUtils; +import com.alibaba.fastjson.JSONObject; +import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder; +import org.elasticsearch.action.admin.indices.create.CreateIndexResponse; +import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse; +import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest; +import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse; +import org.elasticsearch.action.bulk.BulkRequestBuilder; +import org.elasticsearch.action.bulk.BulkResponse; +import org.elasticsearch.action.delete.DeleteResponse; +import org.elasticsearch.action.get.GetRequestBuilder; +import org.elasticsearch.action.get.GetResponse; +import org.elasticsearch.action.index.IndexRequestBuilder; +import org.elasticsearch.action.index.IndexResponse; +import org.elasticsearch.action.search.SearchRequestBuilder; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.action.search.SearchType; +import org.elasticsearch.action.update.UpdateRequest; +import org.elasticsearch.action.update.UpdateResponse; +import org.elasticsearch.client.transport.TransportClient; +import org.elasticsearch.common.text.Text; +import org.elasticsearch.common.xcontent.XContentBuilder; +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.index.reindex.BulkByScrollResponse; +import org.elasticsearch.index.reindex.DeleteByQueryAction; +import org.elasticsearch.search.SearchHit; +import org.elasticsearch.search.aggregations.AggregationBuilders; +import org.elasticsearch.search.aggregations.BucketOrder; +import org.elasticsearch.search.aggregations.bucket.range.Range; +import org.elasticsearch.search.aggregations.bucket.terms.StringTerms; +import org.elasticsearch.search.aggregations.metrics.avg.Avg; +import org.elasticsearch.search.aggregations.metrics.max.Max; +import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; +import org.elasticsearch.search.sort.SortOrder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.*; + +@Component +public class ElasticsearchServiceImpl implements ElasticsearchService { + private static final Logger logger = LoggerFactory.getLogger(ElasticsearchServiceImpl.class); + @Autowired + private TransportClient transportClient; + + private TransportClient client; + + @PostConstruct + public void init() { + client = this.transportClient; + } + + /** + * Elasticsearch 创建索引实现 + * @param index 要创建的索引 + * @return true表示创建成功,false表示创建失败 + * @author gaoyan + * date 2018-08-27 + */ + @Override + public boolean createIndex(String index ,XContentBuilder mapping){ + if (!isIndexExist(index)) { + logger.info("Index is not exits!"); + } + CreateIndexRequestBuilder cib=client.admin().indices().prepareCreate(index); + cib.addMapping(index, mapping); + CreateIndexResponse indexresponse = cib.execute().actionGet(); + logger.info("执行建立成功?" + indexresponse.isAcknowledged()); + return indexresponse.isAcknowledged(); + } + + /** + * Elasticsearch 删除索引实现 + * @param index 要删除的索引 + * @return true表示删除成功,false表示删除失败 + * @author gaoyan + * date 2018-08-27 + */ + @Override + public boolean deleteIndex(String index) { + if (!isIndexExist(index)) { + logger.info("Index is not exits!"); + } + DeleteIndexResponse dResponse = client.admin().indices().prepareDelete(index).get(); + if (dResponse.isAcknowledged()) { + logger.info("delete index " + index + " successfully!"); + } else { + logger.info("Fail to delete index " + index); + } + return dResponse.isAcknowledged(); + } + + /** + * Elasticsearch 判断索引是否存在实现 + * @param index 要判断的索引名称 + * @return true表示该索引存在,false表示该索引不存在 + * @author gaoyan + * date 2018-08-28 + */ + @Override + public boolean isIndexExist(String index) { + IndicesExistsResponse inExistsResponse = client.admin().indices().exists(new IndicesExistsRequest(index)).actionGet(); + if (inExistsResponse.isExists()) { + logger.info("Index [" + index + "] is exist!"); + } else { + logger.info("Index [" + index + "] is not exist!"); + } + return inExistsResponse.isExists(); + } + + /** + * 指定ID数据添加接口实现, + * @param jsonObject 要增加的数据 + * @param index 索引,类似数据库 + * @param type 类型,类似表 (自6.0改版以后,一个索引里只允许有一种类型, + * 如果索引中已经有类型,增加数据过程中,添加其他类型会报错) + * @param id 数据ID + * @return 返回创建的文档的id + * @author gaoyan + * date 2018-08-28 + */ + @Override + public String addData(JSONObject jsonObject, String index, String type, String id) { + IndexResponse response = client.prepareIndex(index, type, id).setSource(jsonObject).get(); + logger.info("addData response status:{},id:{}", response.status().getStatus(), response.getId()); + return response.getId(); + } + + @Override + public String addDataForMap(Map attrInfoMap, String index, String type, String id) { + IndexResponse response = client.prepareIndex(index, type, id).setSource(attrInfoMap).get(); + logger.info("addData response status:{},id:{}", response.status().getStatus(), response.getId()); + return response.getId(); + } + + /** + * 不指定ID数据添加接口实现, + * @param jsonObject 要增加的数据 + * @param index 索引,类似数据库 + * @param type 类型,类似表 (自6.0改版以后,一个索引里只允许有一种类型, + * 如果索引中已经有类型,增加数据过程中,添加其他类型会报错) + * @return 返回创建的文档的id + * @author gaoyan + * date 2018-08-28 + */ + @Override + public String addData(JSONObject jsonObject, String index, String type) { + IndexResponse response = client.prepareIndex(index, type).setSource(jsonObject).get(); + logger.info("addData response status:{},id:{}", response.status().getStatus(), response.getId()); + return response.getId(); + } + + /** + * 通过ID删除数据实现 + * + * @param index 索引,类似数据库 + * @param type 类型,类似表 + * @param id 数据ID + * @return 正确删除返回DELETED + * @author gaoyan + * date 2018-08-28 + */ + @Override + public String deleteDataById(String index, String type, String id) { + DeleteResponse response = client.prepareDelete(index, type, id).get(); + logger.info("deleteDataById response status:{},id:{}", response.status().getStatus(), response.getId()); + return response.getResult().toString(); + } + + /** + * Elasticsearch 删除某个index所有的文档接口实现 + * @param index 要插入的索引 + * @return 删除返回的结果,一共删除多少条 + * @author gaoyan + * date 2018-08-27 + */ + @Override + public long deleteAllDataOfIndex(String index) { + BulkByScrollResponse response = DeleteByQueryAction.INSTANCE.newRequestBuilder(client) + .filter(QueryBuilders.matchAllQuery()) + .source(index) + .get(); + //一共删除掉多少条 + long deleted = response.getDeleted(); + return deleted; + } + + /** + * 通过ID 更新数据实现 + * + * @param jsonObject 要更新的数据 + * @param index 索引,类似数据库 + * @param type 类型,类似表 + * @param id 数据ID + * @return 如果正确删除返回 UPDATED + * @author gaoyan + * date 2018-08-28 + */ + @Override + public String updateDataById(JSONObject jsonObject, String index, String type, String id) { + UpdateRequest updateRequest = new UpdateRequest(); + updateRequest.index(index).type(type).id(id).doc(jsonObject); + UpdateResponse result; + try { + result = this.client.update(updateRequest).get(); + } catch (Exception e) { + logger.error(e.getMessage(),e); + return e.getMessage(); + } + return result.getResult().toString(); + } + + @Override + public String updateDataByIdForMap(Map attrInfoMap, String index, String type, String id) { + UpdateRequest updateRequest = new UpdateRequest(); + updateRequest.index(index).type(type).id(id).doc(attrInfoMap); + UpdateResponse result; + try { + result = this.client.update(updateRequest).get(); + } catch (Exception e) { + logger.error(e.getMessage(),e); + return e.getMessage(); + } + return result.getResult().toString(); + } + + /** + * 通过ID获取数据实现 + * + * @param index 索引,类似数据库 + * @param type 类型,类似表 + * @param id 数据ID + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @return Map结构的数据集 + * @author gaoyan + * date 2018-08-28 + */ + @Override + public Map searchDataById(String index, String type, String id, String fields) { + + GetRequestBuilder getRequestBuilder = client.prepareGet(index, type, id); + if (StringUtils.isNotEmpty(fields)) { + getRequestBuilder.setFetchSource(fields.split(","), null); + } + GetResponse getResponse = getRequestBuilder.get(); + return getResponse.getSource(); + } + + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + * @author gaoyan + * date 2018-08-28 + */ + @Override + public List> searchListData(String index, String type, String fields, String matchStr) { + return searchListData(index, type, 0, 0, null, fields, null, false, null, matchStr); + } + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + * @author gaoyan + * date 2018-08-28 + */ + @Override + public List> searchListData(String index, String type, String fields, String sortField, boolean matchPhrase, String matchStr) { + return searchListData(index, type, 0, 0, null, fields, sortField, matchPhrase, null, matchStr); + } + + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称 + * @param size 文档大小限制 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param highlightField 高亮字段 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + @Override + public List> searchListData(String index, String type, Integer size, String fields, String sortField, boolean matchPhrase, String highlightField, String matchStr) { + return searchListData(index, type, 0, 0, size, fields, sortField, matchPhrase, highlightField, matchStr); + } + + + /** + * 使用分词查询 + * + * @param index 索引名称 + * @param type 类型名称 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param size 文档大小限制 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param highlightField 高亮字段 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + @Override + public List> searchListData(String index, String type, long startTime, long endTime, Integer size, String fields, String sortField, boolean matchPhrase, String highlightField, String matchStr) { + + SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index); + if (StringUtils.isNotEmpty(type)) { + searchRequestBuilder.setTypes(type.split(",")); + } + BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); + + if (startTime > 0 && endTime > 0) { + boolQuery.must(QueryBuilders.rangeQuery("processTime") + .format("epoch_millis") + .from(startTime) + .to(endTime) + .includeLower(true) + .includeUpper(true)); + } + + //搜索的的字段 + if (StringUtils.isNotEmpty(matchStr)) { + for (String s : matchStr.split(",")) { + String[] ss = s.split("="); + if (ss.length > 1) { + if (matchPhrase == Boolean.TRUE) { + boolQuery.must(QueryBuilders.matchPhraseQuery(s.split("=")[0], s.split("=")[1])); + } else { + boolQuery.must(QueryBuilders.matchQuery(s.split("=")[0], s.split("=")[1])); + } + } + + } + } + + // 高亮(xxx=111,aaa=222) + if (StringUtils.isNotEmpty(highlightField)) { + HighlightBuilder highlightBuilder = new HighlightBuilder(); + + //highlightBuilder.preTags("");//设置前缀 + //highlightBuilder.postTags("");//设置后缀 + + // 设置高亮字段 + highlightBuilder.field(highlightField); + searchRequestBuilder.highlighter(highlightBuilder); + } + + + searchRequestBuilder.setQuery(boolQuery); + + if (StringUtils.isNotEmpty(fields)) { + searchRequestBuilder.setFetchSource(fields.split(","), null); + } + searchRequestBuilder.setFetchSource(true); + + if (StringUtils.isNotEmpty(sortField)) { + searchRequestBuilder.addSort(sortField, SortOrder.DESC); + } + + if (size != null && size > 0) { + searchRequestBuilder.setSize(size); + } + + //打印的内容 可以在 Elasticsearch head 和 Kibana 上执行查询 + logger.info("\n{}", searchRequestBuilder); + + SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); + + long totalHits = searchResponse.getHits().totalHits; + long length = searchResponse.getHits().getHits().length; + + logger.info("共查询到[{}]条数据,处理数据条数[{}]", totalHits, length); + + if (searchResponse.status().getStatus() == 200) { + // 解析对象 + return setSearchResponse(searchResponse, highlightField); + } + + return null; + + } + + /** + * 使用分词查询,并分页 + * + * @param index 索引名称 + * @param type 类型名称,可传入多个type逗号分隔 + * @param currentPage 当前页 + * @param pageSize 每页显示条数 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param fields 需要显示的字段,逗号分隔(缺省为全部字段) + * @param sortField 排序字段 + * @param matchPhrase true 使用,短语精准匹配 + * @param highlightField 高亮字段 + * @param matchStr 过滤条件(xxx=111,aaa=222) + * @return + */ + @Override + public EsPage searchDataPage(String index, String type, int currentPage, int pageSize, long startTime, long endTime, String fields, String sortField, boolean matchPhrase, String highlightField, String matchStr) { + SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index); + if (StringUtils.isNotEmpty(type)) { + searchRequestBuilder.setTypes(type.split(",")); + } + searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH); + + // 需要显示的字段,逗号分隔(缺省为全部字段) + if (StringUtils.isNotEmpty(fields)) { + searchRequestBuilder.setFetchSource(fields.split(","), null); + } + + //排序字段 + if (StringUtils.isNotEmpty(sortField)) { + searchRequestBuilder.addSort(sortField, SortOrder.DESC); + } + + BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); + + if (startTime > 0 && endTime > 0) { + boolQuery.must(QueryBuilders.rangeQuery("processTime") + .format("epoch_millis") + .from(startTime) + .to(endTime) + .includeLower(true) + .includeUpper(true)); + } + + // 查询字段 + if (StringUtils.isNotEmpty(matchStr)) { + for (String s : matchStr.split(",")) { + String[] ss = s.split("="); + if (matchPhrase == Boolean.TRUE) { + boolQuery.must(QueryBuilders.matchPhraseQuery(s.split("=")[0], s.split("=")[1])); + } else { + boolQuery.must(QueryBuilders.matchQuery(s.split("=")[0], s.split("=")[1])); + } + } + } + + // 高亮(xxx=111,aaa=222) + if (StringUtils.isNotEmpty(highlightField)) { + HighlightBuilder highlightBuilder = new HighlightBuilder(); + + //highlightBuilder.preTags("");//设置前缀 + //highlightBuilder.postTags("");//设置后缀 + + // 设置高亮字段 + highlightBuilder.field(highlightField); + searchRequestBuilder.highlighter(highlightBuilder); + } + + searchRequestBuilder.setQuery(QueryBuilders.matchAllQuery()); + searchRequestBuilder.setQuery(boolQuery); + + // 分页应用 + searchRequestBuilder.setFrom(currentPage).setSize(pageSize); + + // 设置是否按查询匹配度排序 + searchRequestBuilder.setExplain(true); + + //打印的内容 可以在 Elasticsearch head 和 Kibana 上执行查询 + logger.info("\n{}", searchRequestBuilder); + + // 执行搜索,返回搜索响应信息 + SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); + + long totalHits = searchResponse.getHits().totalHits; + long length = searchResponse.getHits().getHits().length; + + logger.debug("共查询到[{}]条数据,处理数据条数[{}]", totalHits, length); + + if (searchResponse.status().getStatus() == 200) { + // 解析对象 + List> sourceList = setSearchResponse(searchResponse, highlightField); + + return new EsPage(currentPage, pageSize, (int) totalHits, sourceList); + } + + return null; + + } + + /** + * 高亮结果集 特殊处理 + * + * @param searchResponse + * @param highlightField + */ + @Override + public List> setSearchResponse(SearchResponse searchResponse, String highlightField) { + List> sourceList = new ArrayList>(); + StringBuffer stringBuffer = new StringBuffer(); + + for (SearchHit searchHit : searchResponse.getHits().getHits()) { + searchHit.getSourceAsMap().put("id", searchHit.getId()); + + if (StringUtils.isNotEmpty(highlightField)) { + logger.debug("遍历 高亮结果集,覆盖 正常结果集" + searchHit.getSourceAsMap()); + Text[] text = searchHit.getHighlightFields().get(highlightField).getFragments(); + + if (text != null) { + for (Text str : text) { + stringBuffer.append(str.string()); + } + //遍历 高亮结果集,覆盖 正常结果集 + searchHit.getSourceAsMap().put(highlightField, stringBuffer.toString()); + } + } + sourceList.add(searchHit.getSourceAsMap()); + } + return sourceList; + } + + /** + * Elasticsearch 批量插入接口实现 + * @param index + * @param type + * @param list + * @return + * @author gaoyan + * date 2018-08-27 + */ + @Override + public String addBulkData(String index, String type, List list) { + BulkRequestBuilder bulkRequestBuilder = client.prepareBulk(); + for(int i=0;i> searchListDataAndSort( String[] index,String[] type,String sortfield,String[] fields) { + SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index) + .setTypes(type) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + //设置全文搜索 + //.setQuery(QueryBuilders.matchAllQuery()) + //设置某个field的搜索条件项,此处是模糊搜索;text:mill ,搜索address中含有关键字 mill;text:mill lane,搜索address中含有关键字mill或者lane的 + //.setQuery(QueryBuilders.matchQuery("address","mill lane")) + //使用matchPhraseQuery过程中,当text:mill lane ,搜索address中即含有关键字mill lane,mill lane 词组不会被拆分,作为一个整体当做查询条件。 + .setQuery(QueryBuilders.matchPhraseQuery("address","lane mill")); + //如果需要按照多个字段排序,直接依次添加addSort + //.addSort(sortfield,SortOrder.DESC) + //设置查询数量 + //.setSize(60) + //设置从第几个开始查 + //.setFrom(0) + //设置要查询的字段,fields + //.setFetchSource(fields,null) + /*.setPostFilter(QueryBuilders.rangeQuery("age").from(12).to(18)) // Filter + .setExplain(true);*/ + SearchResponse response = searchRequestBuilder.get(); + List> result = SearchResponseToList(response); + return result; + } + + @Override + public List> searchListDataUnit(String[] index, String[] type, String sortfield, String[] fields) { + SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index) + .setTypes(type) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH); + + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + + //boolQueryBuilder两次.must ,如下,表示address中必须包含lane和mill + //boolQueryBuilder.must(QueryBuilders.matchQuery("address","lane")); + //boolQueryBuilder.must(QueryBuilders.matchQuery("address","mill")); + + //boolQueryBuilder两次.should ,如下,表示address中必须包含lane或者mill + //boolQueryBuilder.should(QueryBuilders.matchQuery("address","lane")); + //boolQueryBuilder.should(QueryBuilders.matchQuery("address","mill")); + + //boolQueryBuilder两次.mustNot ,如下,表示address中必须不能包含lane和mill + //boolQueryBuilder.mustNot(QueryBuilders.matchQuery("address","lane")); + //boolQueryBuilder.mustNot(QueryBuilders.matchQuery("address","mill")); + + //BoolQuerBuilder 可以使用must,should,mustnot 组合使用 + //boolQueryBuilder.mustNot(QueryBuilders.matchQuery("state","ID")); + //boolQueryBuilder.must(QueryBuilders.matchQuery("age",40)); + //boolQueryBuilder.must(QueryBuilders.matchQuery("balance",28969)); + + //boolQueryBuilder.filter中可以添加RangeQueryBuilder,下面注释中两种定义的RangeQueryBuilder是一样的,不同的两种方式 + //RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("balance").from(20000).to(30000).includeLower(true).includeUpper(true); + //RangeQueryBuilder rangeQueryBuilder2 = QueryBuilders.rangeQuery("age").gte(20).lte(23); + //boolQueryBuilder.filter(rangeQueryBuilder); + //boolQueryBuilder.filter(rangeQueryBuilder2); + + searchRequestBuilder.setQuery(boolQueryBuilder); + SearchResponse response = searchRequestBuilder.get(); + List> result = SearchResponseToList(response); + return result; + } + + /** + * 涉及组合查询条件主要涉及到聚合函数的使用,主要是分组求平均值,依靠平均值排序 + * @param index index名称,可以从多个index中查询,所以这里定义成String数组 + * @param type type名称,可以从多种type中查询,所以这里定义成String数组 + * @return + * @author gaoyan + * date 2018-08-29 + */ + @Override + public List> searchListDataGroup(String[] index, String[] type) { + SearchResponse sr = client.prepareSearch(index) + .setTypes(type) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .addAggregation( + //分组依靠关键字terms + AggregationBuilders.terms("by_state") + .field("state.keyword") + .subAggregation( + //分组后求平均值依靠关键字avg,其他具体聚合函数可以参考官网 + // https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/_metrics_aggregations.html + AggregationBuilders.avg("average_balance") + .field("balance") + ) + //分组后的排序方法,分别是聚合函数平均值,分组后统计数据,分组后关键字key,根据需求选择合适的排序 + .order(BucketOrder.aggregation("average_balance",false)) + .order(BucketOrder.count(true)) + .order(BucketOrder.key(true)) + ) + .execute() + .actionGet(); + //分组后得到的数据整合 + StringTerms result = sr.getAggregations().get("by_state"); + List> sourceList = new ArrayList>(); + for (StringTerms.Bucket bucket : result.getBuckets()) { + Map map = new HashMap<>(); + map.put("key",bucket.getKeyAsString()); + map.put("count",bucket.getDocCount()); + Avg avg = bucket.getAggregations().get("average_balance"); + map.put("averagebalance",avg.getValue()); + sourceList.add(map); + } + return sourceList; + } + + /** + * 涉及组合查询条件主要涉及到聚合函数的使用,较为复杂,按照年龄阶段分组后,再安装性别分组,求balance平均值 ranges + * @param index index名称,可以从多个index中查询,所以这里定义成String数组 + * @param type type名称,可以从多种type中查询,所以这里定义成String数组 + * @return + * @author gaoyan + * date 2018-08-29 + */ + @Override + public List> searchListDataGroupComplex(String[] index, String[] type) { + SearchResponse sr = client.prepareSearch(index) + .setTypes(type) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .addAggregation( + //分组依靠关键字range + AggregationBuilders.range("by_age") + .field("age") + .addRange(20,30) + .addRange(30,40) + .addRange(40,50) + .subAggregation( + //分组依靠关键字terms + AggregationBuilders.terms("by_gender") + .field("gender.keyword") + .subAggregation( + //分组后求依靠关键字avg,其他具体聚合函数可以参考官网 + // https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/_metrics_aggregations.html + AggregationBuilders.max("max_balance") + .field("balance") + ) + ) + ) + .execute() + .actionGet(); + //分组后得到的数据整合 + Range result = sr.getAggregations().get("by_age"); + List> sourceList = new ArrayList>(); + for (Range.Bucket bucket : result.getBuckets()) { + Map map = new HashMap<>(); + map.put("key",bucket.getKeyAsString()); + map.put("count",bucket.getDocCount()); + + List> sourcechildList = new ArrayList>(); + StringTerms resultchild = bucket.getAggregations().get("by_gender"); + for (StringTerms.Bucket bucketchild : resultchild.getBuckets()) { + Map childmap = new HashMap<>(); + childmap.put("key",bucketchild.getKeyAsString()); + childmap.put("count",bucketchild.getDocCount()); + Max max = bucketchild.getAggregations().get("max_balance"); + map.put("maxbalance",max.getValue()); + sourcechildList.add(childmap); + } + + map.put("gender",sourcechildList); + sourceList.add(map); + } + return sourceList; + } + + + @Override + public List> SearchResponseToList(SearchResponse searchResponse) { + List> sourceList = new ArrayList>(); + for (SearchHit searchHit : searchResponse.getHits().getHits()) { + searchHit.getSourceAsMap().put("id", searchHit.getId()); + sourceList.add(searchHit.getSourceAsMap()); + } + return sourceList; + } + + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java b/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java new file mode 100644 index 00000000..48384407 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java @@ -0,0 +1,1396 @@ +package com.adc.da.search.service.impl; + +import com.adc.da.person.dao.PersonSearchEODao; +import com.adc.da.search.entity.SarAdvanceSearchVO; +import com.adc.da.search.entity.SearchListDto; +import com.adc.da.search.entity.SeniorSearchInfoEO; +import com.adc.da.search.service.SearchCenterService; +import com.alibaba.fastjson.JSONArray; +import net.sf.json.JSONObject; +import org.apache.commons.lang.StringUtils; +import org.eclipse.jetty.util.StringUtil; +import org.elasticsearch.action.search.SearchRequestBuilder; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.action.search.SearchType; +import org.elasticsearch.client.transport.TransportClient; +import org.elasticsearch.common.lucene.search.function.CombineFunction; +import org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction; +import org.elasticsearch.common.text.Text; +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.index.query.RangeQueryBuilder; +import org.elasticsearch.index.query.functionscore.FieldValueFactorFunctionBuilder; +import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder; +import org.elasticsearch.search.SearchHit; +import org.elasticsearch.search.aggregations.Aggregation; +import org.elasticsearch.search.aggregations.AggregationBuilders; +import org.elasticsearch.search.aggregations.bucket.range.Range; +import org.elasticsearch.search.aggregations.bucket.range.RangeAggregationBuilder; +import org.elasticsearch.search.aggregations.bucket.terms.StringTerms; +import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder; +import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; +import org.elasticsearch.search.fetch.subphase.highlight.HighlightField; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +@Component +public class SearchCenterServiceImpl implements SearchCenterService { + private final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(SearchCenterServiceImpl.class); + + + @Autowired + private TransportClient transportClient; + + private TransportClient client; + + @PostConstruct + public void init() { + client = this.transportClient; + } + + private static final String ISSUE_TIME = "issue_time_data"; + private static final String PUT_TIME = "put_time"; + private static final String EPOCH_MILLIS = "epoch_millis"; + String numbershowStr = "numbershow"; + String nameshowStr = "nameshow"; + String nameshowSplit = "nameshowSplit"; + String numbershowSplit = "numbershowSplit"; + String replacedStandNumStr = "replaced_stand_num"; + String replaceStandNumStr = "replace_stand_num"; + String content = "content"; + + //关键字检索 + @Override + public List> searchSarBykey(SeniorSearchInfoEO searchInfoEO) throws Exception { + //判断是否高级查询 isHight = true(searchInfoEO.getIsHigh()为空)时,证明不是高级查询 + boolean isHight = StringUtils.isBlank(searchInfoEO.getIsHigh()); + List> result = new ArrayList<>(); + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + // 记录搜索记录到数据库中 + BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery(); + BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery(); + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue()) && StringUtils.isBlank(searchInfoEO.getIsHigh())){ + QueryBuilder multiQueryBuilder; + switch (searchInfoEO.getSelectIndex()){ + case "stand": + multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + numbershowSplit,nameshowSplit,numbershowStr,nameshowStr,"numberExpNull","standSortShow","standstateshow","countryShow","standEnName", + "synopsis","baseSearchContent",content,"CYSDShow","CLLXShow","standstateshow","ZRLXShow","stand_name","stand_number","citeStand","DTBJH","FGXXSXXXShow","CBBH","YYBJ","XGLC","synopsis","isRelateAccess","GKDWShow","CYSDShow","FBJGShow","ZRLXShow","GXHBQShow","GZZXXName","YQLXShow","FGWHRName","ZRBMShow","XGBMShow","SVPPSName","FOShow","XMPGJSShow","BDTBZBH","BYYBJ","issue_time","ZCCSSRQ","XCXSSRQ","accessCountry").minimumShouldMatch("100%"); + boolQueryMust.must(multiQueryBuilder); + boolQueryShould.should(QueryBuilders.wildcardQuery(nameshowStr, "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery(numbershowStr, "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery(numbershowSplit, "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery(nameshowSplit, "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("CYSDShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("CLLXShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standstateshow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZRLXShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("stand_name", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("DTBJH", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("FGXXSXXXShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("CBBH", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("YYBJ", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XGLC", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("synopsis", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("isRelateAccess", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("GKDWShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("CYSDShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("FBJGShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZRLXShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("GXHBQShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("GZZXXName", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("YQLXShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XCXSSRQ", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZCCSSRQ", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("EOPSSRQ", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("FGWHRName", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZRBMShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XGBMShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("SVPPSName", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("FOShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XMPGJSShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("accessCountry", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("content", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("BDTBZBH", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("BYYBJ", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("issue_time", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("stand_number", "*"+searchInfoEO.getSelectValue()+"*")); + break; + case "laws": + multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + numbershowSplit,nameshowSplit,nameshowStr,numbershowStr,"numberExpNull","standstateshow","countryShow", "natureShow", "replace_laws_num", + "synopsis","standEnName",replacedStandNumStr,"baseSearchContent",content,"CYSDShow","SYCLLXShow","standstateshow","ZRLXShow","stand_number","isRelateAccess","YQLXShow","SYCLLXShow","GXHBQShow","ZCGCSShow","FBJGShow","SVPPSName","XGBMShow","ZRBMShow","FOShow","GKGLBMShow","WSSFCYShow","replaceLawsNum","replacedLawsNum","XMPGJSShow","issue_time","ZCCSSRQ","XCXSSRQ","EOPSSRQ","XGLC","accessCountry").minimumShouldMatch("100%"); + boolQueryMust.must(multiQueryBuilder); + boolQueryShould.should(QueryBuilders.wildcardQuery(nameshowStr, "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery(numbershowStr, "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery(numbershowSplit, "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery(nameshowSplit, "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery(content, "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("CYSDShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("SYCLLXShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("accessCountry", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standstateshow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZRLXShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("isRelateAccess", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("YQLXShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("SYCLLXShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("GXHBQShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XCXSSRQ", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZCCSSRQ", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("EOPSSRQ", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZCGCSShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("FBJGShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("SVPPSName", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XGBMShow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("ZRBMName", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZRBMShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("FOShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("GKGLBMShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("content", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("WSSFCYShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("replaceLawsNum", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("replacedLawsNum", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("issue_time", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XMPGJSShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XGLC", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("stand_number", "*"+searchInfoEO.getSelectValue()+"*")); + break; + case "bussstand": + multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + numbershowSplit,nameshowSplit,numbershowStr,nameshowStr,"numberExpNull","standstateshow", "standEnName",replaceStandNumStr, + replacedStandNumStr,"countryShow","synopsis","standSortShow","ZQCBMShow","ZQCBM","stand_status", + "baseSearchContent",content,"numbershow","nameshow","standstateshow","issue_time","replaceStandNum","replacedStandNum","QBMJShow","QBSQShow","XHQBMShow","SVPPSName","XGBMName","ZYQCRShow","ZRBMShow","ZQCBMName","QTQCRShow","content","FSRQString","FZRQString","put_time","XGLC","WFSPJSName","GFXYYWJ").minimumShouldMatch("100%"); + boolQueryMust.must(multiQueryBuilder); + boolQueryShould.should(QueryBuilders.wildcardQuery(nameshowStr, "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery(numbershowStr, "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery(numbershowSplit, "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery(nameshowSplit, "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZQCBMShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standstateshow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZQCBM", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("stand_status", "*"+searchInfoEO.getSelectValue()+"*")) + + .should(QueryBuilders.wildcardQuery("numbershow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standEnName", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("content", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("issue_time", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("nameshow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standstateshow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("replaceStandNum", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("replacedStandNum", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("QBMJShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("QBSQShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XHQBMShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("SVPPSName", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XGBMName", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZYQCRShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZRBMShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("ZQCBMName", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("QTQCRShow", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("FSRQString", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("FZRQString", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("XGLC", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("WFSPJSName", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("GFXYYWJ", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("put_time", "*"+searchInfoEO.getSelectValue()+"*")); + break; + default: break; + } + } + + //在结果中检索 + if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword()) && StringUtils.isBlank(searchInfoEO.getIsHigh())) { + QueryBuilder multiQuery = queryInResult(searchInfoEO); + boolQueryBuilder.must(multiQuery); + } + + searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex()) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize()) + .setSize(searchInfoEO.getPageSize()); + boolQueryBuilder.must(QueryBuilders.matchQuery("validFlag", 0)); + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){ + boolQueryBuilder.should(boolQueryShould); + } + if(searchInfoEO.getSelectIndex().equals("stand")) { + BoolQueryBuilder standBoolQueryBuilder = queryStandMsg(searchInfoEO,boolQueryMust,searchRequestBuilder); + boolQueryBuilder.must(standBoolQueryBuilder); + searchRequestBuilder.setQuery(boolQueryBuilder); + //在结果中检索 + if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword()) && StringUtils.isNotBlank(searchInfoEO.getIsHigh())) { + QueryBuilder multiQuery = queryInResult(searchInfoEO); + boolQueryBuilder.must(multiQuery); + } + result = countStandSearchResult(searchRequestBuilder,searchInfoEO); + } else if(searchInfoEO.getSelectIndex().equals("laws")){ + BoolQueryBuilder lawsBoolQueryBuilder = queryLawsMsg(searchInfoEO,boolQueryMust,searchRequestBuilder); + boolQueryBuilder.must(lawsBoolQueryBuilder); + searchRequestBuilder.setQuery(boolQueryBuilder); + //在结果中检索 + if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword()) && StringUtils.isNotBlank(searchInfoEO.getIsHigh())) { + QueryBuilder multiQuery = queryInResult(searchInfoEO); + boolQueryBuilder.must(multiQuery); + } + // 获取查询到的结果 + result = countStandSearchResult(searchRequestBuilder,searchInfoEO); + } else if(searchInfoEO.getSelectIndex().equals("bussstand")){ + BoolQueryBuilder bussstandBoolQueryBuilder = queryBussStandMsg(searchInfoEO,boolQueryMust,searchRequestBuilder); + boolQueryBuilder.must(bussstandBoolQueryBuilder); + searchRequestBuilder.setQuery(boolQueryBuilder); + //在结果中检索 + if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword()) && StringUtils.isNotBlank(searchInfoEO.getIsHigh())) { + QueryBuilder multiQuery = queryInResult(searchInfoEO); + boolQueryBuilder.must(multiQuery); + } + // 获取查询到的结果 + result = countStandSearchResult(searchRequestBuilder,searchInfoEO); + } + return result; + } + + public BoolQueryBuilder querySeniorMsg (SeniorSearchInfoEO searchInfoEO, BoolQueryBuilder boolQueryBuilder) { + BoolQueryBuilder boolQueryBuilderMust = new BoolQueryBuilder(); + String advanceStr = searchInfoEO.getAdvanceSearchVOStr(); + List searchVOList = new ArrayList<>(); + if (StringUtils.isNotBlank(advanceStr)) { + searchVOList = JSONArray.parseArray(advanceStr, SarAdvanceSearchVO.class); + } + if (searchVOList != null && !searchVOList.isEmpty()) { + List sarAdvanceSearchVOS = new ArrayList<>(); + int size = searchVOList.size(); + for (SarAdvanceSearchVO searchVO1 : searchVOList) { + SarAdvanceSearchVO sarAdvanceSearchVO = new SarAdvanceSearchVO(); + if ("XCXSSRQ".equals(searchVO1.getField())||"ZCCSSRQ".equals(searchVO1.getField())||"EOPSSRQ".equals(searchVO1.getField())){ + sarAdvanceSearchVO.setField(searchVO1.getField()+"1"); + sarAdvanceSearchVO.setConnect("OR"); + sarAdvanceSearchVO.setType("like"); + sarAdvanceSearchVO.setValue("TBD"); + sarAdvanceSearchVOS.add(sarAdvanceSearchVO); + } + } + searchVOList.addAll(sarAdvanceSearchVOS); + for (SarAdvanceSearchVO searchVO : searchVOList) { + if ("stand_state".equals(searchVO.getField())){ + searchVO.setType("="); + } + String field = searchVO.getField(); + String value = searchVO.getValue(); + if ("WFSPJS".equals(field) || "SVPPS".equals(field)){ + value = value.replace(","," , "); + } + //发布时间范围 + if (StringUtils.isNotBlank(searchVO.getField()) &&("issue_time".equals(searchVO.getField()) || "put_time".equals(searchVO.getField()) || "FZRQ".equals(searchVO.getField())|| "FSRQ".equals(searchVO.getField()) ||"XCXSSRQ".equals(searchVO.getField())||"ZCCSSRQ".equals(searchVO.getField())||"EOPSSRQ".equals(searchVO.getField()))) { + String fieldName = ""; + fieldName = searchVO.getField(); + switch (searchVO.getField()){ + case "issue_time" : +// boolQueryBuilderMust.mustNot(QueryBuilders.matchQuery(field, "已实施")).must(QueryBuilders.existsQuery(field)).mustNot(QueryBuilders.matchQuery(field, "N/A")).mustNot(QueryBuilders.matchQuery(field+".keyword", " ")).mustNot(QueryBuilders.matchQuery(field+".keyword", "")); + boolQueryBuilder.should(QueryBuilders.matchQuery(field + ".keyword" , "TBD")); + fieldName = ISSUE_TIME; + break; + case "put_time" : +// boolQueryBuilderMust.mustNot(QueryBuilders.matchQuery(field, "已实施")).must(QueryBuilders.existsQuery(field)).mustNot(QueryBuilders.matchQuery(field, "N/A")).mustNot(QueryBuilders.matchQuery(field+".keyword", " ")).mustNot(QueryBuilders.matchQuery(field+".keyword", "")); + boolQueryBuilder.should(QueryBuilders.matchQuery(field + ".keyword", "TBD")); + fieldName = "put_time_data"; + break; + case "XCXSSRQ" : +// boolQueryBuilderMust.mustNot(QueryBuilders.matchQuery(field, "已实施")).must(QueryBuilders.existsQuery(field)).mustNot(QueryBuilders.matchQuery(field, "N/A")).mustNot(QueryBuilders.matchQuery(field+".keyword", " ")).mustNot(QueryBuilders.matchQuery(field+".keyword", "")); + boolQueryBuilder.should(QueryBuilders.matchQuery(field + ".keyword", "TBD")); + fieldName = "XCXSSRQ_data"; + break; + case "ZCCSSRQ" : +// boolQueryBuilderMust.mustNot(QueryBuilders.matchQuery(field, "已实施")).must(QueryBuilders.existsQuery(field)).mustNot(QueryBuilders.matchQuery(field, "N/A")).mustNot(QueryBuilders.matchQuery(field+".keyword", " ")).mustNot(QueryBuilders.matchQuery(field+".keyword", "")); + boolQueryBuilder.should(QueryBuilders.matchQuery(field + ".keyword", "TBD")); + fieldName = "ZCCSSRQ_data"; + break; + case "EOPSSRQ" : +// boolQueryBuilderMust.mustNot(QueryBuilders.matchQuery(field, "已实施")).must(QueryBuilders.existsQuery(field)).mustNot(QueryBuilders.matchQuery(field, "N/A")).mustNot(QueryBuilders.matchQuery(field+".keyword", " ")).mustNot(QueryBuilders.matchQuery(field+".keyword", "")); + boolQueryBuilder.should(QueryBuilders.matchQuery(field + ".keyword", "TBD")); + fieldName = "EOPSSRQ_data"; + break; + default : + break; + } + Long beginTime = 0L; + Long endTime = 0L; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + beginTime = sdf.parse("1970-01-01 00:00:00").getTime(); + } catch (ParseException e1) { + e1.printStackTrace(); + } + try { + endTime = sdf.parse("2999-01-01 00:00:00").getTime(); + } catch (ParseException e1) { + e1.printStackTrace(); + } + Long starttime = 0L; + Long endtime = 0L; + try { + starttime = sdf.parse(searchVO.getTimeSt() +" 00:00:00").getTime(); + starttime--; + } catch (ParseException e) { + try { + starttime = sdf.parse("1970-01-01 00:00:00").getTime(); + } catch (ParseException e1) { + e1.printStackTrace(); + } + } + try { + endtime = sdf.parse(searchVO.getTimeEd()+" 23:59:59").getTime(); + endtime++; + } catch (ParseException e) { + try { + endtime = sdf.parse("2999-01-01 00:00:00").getTime(); + } catch (ParseException e1) { + e1.printStackTrace(); + } + } + if ("=".equals(searchVO.getType()) || "like".equals(searchVO.getType())) { + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(fieldName ).from(starttime).to(endtime).includeLower(true).includeUpper(true); + if ("AND".equals(searchVO.getConnect())|| StringUtils.isBlank(searchVO.getConnect())) { +// RangeQueryBuilder rangeQueryBuilder1 = QueryBuilders.rangeQuery(fieldName ).from(1L).to(starttime).includeLower(true).includeUpper(true); +// RangeQueryBuilder rangeQueryBuilder2 = QueryBuilders.rangeQuery(fieldName ).from(endtime).to(endTime).includeLower(true).includeUpper(true); +// boolQueryBuilder.mustNot(rangeQueryBuilder1); +// boolQueryBuilder.mustNot(rangeQueryBuilder2); +// boolQueryBuilder.mustNot(rangeQueryBuilder3); + boolQueryBuilderMust.must(rangeQueryBuilder); + }else{ + boolQueryBuilder.should(rangeQueryBuilder); + } + }else{ + if ("!=".equals(searchVO.getType())){ + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(fieldName ).from(starttime).to(endtime).includeLower(true).includeUpper(true); + if ("AND".equals(searchVO.getConnect()) || StringUtils.isBlank(searchVO.getConnect())) { + boolQueryBuilder.mustNot(rangeQueryBuilder); + }else{ + boolQueryBuilder.should(rangeQueryBuilder); + } + } + } + continue; + } + if (StringUtil.isNotBlank(field) && StringUtil.isNotBlank(value)) { + String type = searchVO.getType(); + String connect = searchVO.getConnect(); + if ("stand_name".equals(field) || "laws_name".equals(field)) { + field = "nameshow"; + } else if ("stand_state".equals(field) || "laws_state".equals(field) || "stand_status".equals(field)) { + field = "statecode"; +// }else if ("FZRQ".equals(field)){ +// field = "FZRQString"; +// }else if ("FSRQ".equals(field)){ +// field = "FSRQString"; + } + if (("FZRQString".equals(field) || "FSRQString".equals(field))){ + List values = new ArrayList<>(Arrays.asList(value.split("-"))); + if ("=".equals(type) && ("AND".equals(connect) || StringUtils.isBlank(connect))) { + for (String va :values){ + boolQueryBuilderMust.must(QueryBuilders.wildcardQuery(field, "*"+va+"*")); + } + } else if ("=".equals(type) && ("OR".equals(connect) || StringUtils.isBlank(connect))) { + for (String va :values){ + boolQueryBuilder.should(QueryBuilders.wildcardQuery(field, "*"+va+"*")); + } +// boolQueryBuilder.should(QueryBuilders.wildcardQuery(field, "*"+value+"*")); + } else if ("!=".equals(type) && ("AND".equals(connect) || StringUtils.isBlank(connect))) { + if ("FSRQString".equals(field)){ + boolQueryBuilder.mustNot(QueryBuilders.matchQuery("FSRQDate", "*"+value.replace("-","")+"*")); + }else{ + boolQueryBuilder.mustNot(QueryBuilders.matchQuery("FZRQDate", "*"+value.replace("-","")+"*")); + } +// boolQueryBuilder.mustNot(QueryBuilders.wildcardQuery(field, "*"+value+"*")); + } else if ("like".equals(type) && ("AND".equals(connect) || StringUtils.isBlank(connect))) { + for (String va :values){ + boolQueryBuilderMust.must(QueryBuilders.wildcardQuery(field, "*"+va+"*")); + } +// boolQueryBuilder.must(QueryBuilders.wildcardQuery(field, "*"+value+"*")); + } else if ("like".equals(type) && ("OR".equals(connect) || StringUtils.isBlank(connect))) { + for (String va :values){ + boolQueryBuilder.should(QueryBuilders.wildcardQuery(field, "*"+va+"*")); + } +// boolQueryBuilder.should(QueryBuilders.wildcardQuery(field, "*"+value+"*")); + } + continue; + } + if ("XCXSSRQ1".equals(searchVO.getField())||"ZCCSSRQ1".equals(searchVO.getField())||"EOPSSRQ1".equals(searchVO.getField())){ + searchVO.setField(searchVO.getField().substring(0,searchVO.getField().length()-1)); + field = searchVO.getField(); + } + //外发审批角色的企标 等于 查询 +// if("WFSPJS".equals(field) && "=".equals(type)){ +// field = "WFSPJSField"; +// if (StringUtils.isNotBlank(value)){ +// value = value.replace(" , ",""); +// } +// } +// if("ZRBM".equals(field) && "=".equals(type)){ +// field = "ZRBMField"; +// if (StringUtils.isNotBlank(value)){ +// value = value.replace(" , ",""); +// } +// } + if ("FO".equals(field)){ + value = value + " "; + } +// if (StringUtils.isBlank(connect) && size > 1){ +// connect = "OR"; +// } + if ("=".equals(type) && ("AND".equals(connect) || StringUtils.isBlank(connect))) { + boolQueryBuilderMust.must(QueryBuilders.termQuery(field+".keyword", value)); + } else if ("=".equals(type) && ("OR".equals(connect) || StringUtils.isBlank(connect))) { + boolQueryBuilder.should(QueryBuilders.termQuery(field+".keyword", value)); + } else if ("!=".equals(type) && ("AND".equals(connect) || StringUtils.isBlank(connect))) { +// boolQueryBuilder.mustNot(QueryBuilders.termQuery(field+".keyword", value)); + boolQueryBuilder.mustNot(QueryBuilders.wildcardQuery(field+".keyword", "*"+value+"*")); + } else if ("like".equals(type) && ("AND".equals(connect) || StringUtils.isBlank(connect))) { + boolQueryBuilderMust.must(QueryBuilders.wildcardQuery(field+".keyword", "*"+value+"*")); +// boolQueryBuilder.should(QueryBuilders.wildcardQuery(field, value)); + } else if ("like".equals(type) && ("OR".equals(connect) || StringUtils.isBlank(connect))) { + boolQueryBuilder.should(QueryBuilders.wildcardQuery(field+".keyword", "*"+value+"*")); + } + } + } + } + boolQueryBuilder.should(boolQueryBuilderMust); + return boolQueryBuilder; + } + + //检索国内外标准数据 + public BoolQueryBuilder queryStandMsg(SeniorSearchInfoEO searchInfoEO, BoolQueryBuilder boolQueryBuilder, SearchRequestBuilder searchRequestBuilder) throws Exception{ + String nameshowStr = "nameshow"; + // 高级搜索项,只针对标准 + if (StringUtil.isNotBlank(searchInfoEO.getStandType())) { + // 如果等于All,相当于不限制,查询全部 + boolQueryBuilder.must(QueryBuilders.matchQuery("standType", searchInfoEO.getStandType())); + } + //标准类别,国内外标准有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getStandSort())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getStandSort().equals("all") && !searchInfoEO.getStandSort().equals("[]")) { + String[] arrlist = searchInfoEO.getStandSort().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("standSort.keyword", arrlist)); + //boolQueryBuilder.must(QueryBuilders.matchQuery("stand_sort", searchInfoEO.getStandSort())); + } + } + //编号,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getStandNumber())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standNumber", "*"+searchInfoEO.getStandNumber()+"*")); + } + //标准年份 + if (StringUtil.isNotBlank(searchInfoEO.getStandYear())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("standYear", searchInfoEO.getStandYear())); + } + //名称,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getNameShow())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery(nameshowStr, "*"+searchInfoEO.getNameShow()+"*")); + } + //标准英文名称 + if (StringUtil.isNotBlank(searchInfoEO.getStandEnName())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("standEnName", searchInfoEO.getStandEnName())); + } + //标准状态,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getStandState())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getStandState().equals("all") && !searchInfoEO.getStandState().equals("[]") ) { + String[] arrlist = searchInfoEO.getStandState().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("statecode.keyword", arrlist)); + } + } + if (StringUtil.isNotBlank(searchInfoEO.getCLLX())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getCLLX().equals("all") && !searchInfoEO.getCLLX().equals("[]") ) { + String[] arrlist = searchInfoEO.getCLLX().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("CLLX.keyword", arrlist)); + } + } + if (StringUtil.isNotBlank(searchInfoEO.getCYSD())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getCYSD().equals("all") && !searchInfoEO.getCYSD().equals("[]") ) { + String[] arrlist = searchInfoEO.getCYSD().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("CYSD.keyword", arrlist)); + } + } + if (StringUtil.isNotBlank(searchInfoEO.getCBCD())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getCBCD().equals("all") && !searchInfoEO.getCBCD().equals("[]") ) { + String[] arrlist = searchInfoEO.getCBCD().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("CBCD.keyword", arrlist)); + } + } + if (StringUtil.isNotBlank(searchInfoEO.getZRLX())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getZRLX().equals("all") && !searchInfoEO.getZRLX().equals("[]") ) { + String[] arrlist = searchInfoEO.getZRLX().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("ZRLX.keyword", arrlist)); + } + } + querySeniorMsg(searchInfoEO,boolQueryBuilder); + return boolQueryBuilder; + } + + //检索国内外政策数据 + public BoolQueryBuilder queryLawsMsg(SeniorSearchInfoEO searchInfoEO, BoolQueryBuilder boolQueryBuilder, SearchRequestBuilder searchRequestBuilder) throws Exception{ + String numbershowStr = "numbershow"; + String nameshowStr = "nameshow"; + String replacedStandNumStr = "replaced_stand_num"; + String replaceStandNumStr = "replace_stand_num"; + //国家,国内外标准,国内外法规有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getCountry())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getCountry().equals("all") && !searchInfoEO.getCountry().equals("[]")) { +// String[] arrlist = searchInfoEO.getCountry().split(","); +// boolQueryBuilder.must(QueryBuilders.termsQuery("country.keyword", arrlist)); + boolQueryBuilder.must(QueryBuilders.matchQuery("country", searchInfoEO.getCountry())); + } + } + //标准性质,国内外标准,法规有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getNature())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getNature().equals("all") && !searchInfoEO.getNature().equals("[]")) { + String[] arrlist = searchInfoEO.getNature().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("nature.keyword", arrlist)); + } + } + if (StringUtil.isNotBlank(searchInfoEO.getSYCLLX())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getSYCLLX().equals("all") && !searchInfoEO.getSYCLLX().equals("[]") ) { + String[] arrlist = searchInfoEO.getSYCLLX().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("SYCLLX.keyword", arrlist)); + } + } + if (StringUtil.isNotBlank(searchInfoEO.getWSSFCY())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getWSSFCY().equals("all") && !searchInfoEO.getWSSFCY().equals("[]") ) { + String[] arrlist = searchInfoEO.getWSSFCY().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("WSSFCY.keyword", arrlist)); + } + } + if (StringUtil.isNotBlank(searchInfoEO.getCBCD())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getCBCD().equals("all") && !searchInfoEO.getCBCD().equals("[]") ) { + String[] arrlist = searchInfoEO.getCBCD().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("CBCD.keyword", arrlist)); + } + } + if (StringUtil.isNotBlank(searchInfoEO.getZRLX())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getZRLX().equals("all") && !searchInfoEO.getZRLX().equals("[]") ) { + String[] arrlist = searchInfoEO.getZRLX().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("ZRLX.keyword", arrlist)); + } + } + //编号,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getNumberShow())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery(numbershowStr, "*"+searchInfoEO.getNumberShow()+"*")); + } + //名称,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getNameShow())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery(nameshowStr, "*"+searchInfoEO.getNameShow()+"*")); + } + //发布部门 + if (StringUtil.isNotBlank(searchInfoEO.getIssueUnit())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("issueUnit", searchInfoEO.getIssueUnit())); + } + //文件状态,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getStandState())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getStandState().equals("all") && !searchInfoEO.getStandState().equals("[]")) { + String[] arrlist = searchInfoEO.getStandState().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("statecode.keyword", arrlist)); + //boolQueryBuilder.must(QueryBuilders.matchQuery("statecode", searchInfoEO.getStandState())); + } + } + //代替文件号 + if (StringUtil.isNotBlank(searchInfoEO.getReplaceStandNum())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("replace_laws_num", searchInfoEO.getReplaceStandNum())); + } + //适用车型,国内外标准,国内外法规,企业标准 有此属性 录入可多选 + if (StringUtil.isNotBlank(searchInfoEO.getApplyArctic())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getApplyArctic().equals("all") && !searchInfoEO.getApplyArctic().equals("[]")) { + boolQueryBuilder.must(QueryBuilders.matchQuery("apply_arctic", searchInfoEO.getApplyArctic())); + } + } + //能源种类,国内外标准,国内外法规,企业标准 有此属性 录入可多选 + if (StringUtil.isNotBlank(searchInfoEO.getEnergyKind())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getEnergyKind().equals("all") && !searchInfoEO.getEnergyKind().equals("[]") ) { + boolQueryBuilder.must(QueryBuilders.matchQuery("energy_kind", searchInfoEO.getEnergyKind())); + } + } + //适用认证,国内外标准,国内外法规 有此属性 录入可多选 + if (StringUtil.isNotBlank(searchInfoEO.getApplyAuth())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getApplyAuth().equals("all") && !searchInfoEO.getApplyAuth().equals("[]")) { + boolQueryBuilder.must(QueryBuilders.matchQuery("apply_auth", searchInfoEO.getApplyAuth())); + } + } + //责任部门 + if (StringUtil.isNotBlank(searchInfoEO.getResponsibleUnit())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("responsibleUnit", searchInfoEO.getResponsibleUnit())); + } + //发布日期 + if (searchInfoEO.getIssueTime() != null) { + Long starttime = searchInfoEO.getIssueTime().getTime(); + Long endtime = searchInfoEO.getIssueTime().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + //实施日期,国内外标准,国内外法规,企业标准 有此属性 + if (searchInfoEO.getPutTime() != null) { + Long starttime = searchInfoEO.getPutTime().getTime(); + Long endtime = searchInfoEO.getPutTime().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("put_time").format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + //内容摘要 + if (StringUtil.isNotBlank(searchInfoEO.getSynopsis())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("synopsis", searchInfoEO.getSynopsis())); + } + //标准英文名称 + if (StringUtil.isNotBlank(searchInfoEO.getStandEnName())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("standEnName", searchInfoEO.getStandEnName())); + } + //新定型车实施日期 + if (searchInfoEO.getNewcarPutTime() != null) { + Long starttime = searchInfoEO.getNewcarPutTime().getTime(); + Long endtime = searchInfoEO.getNewcarPutTime().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("newcarPutTime").format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + //在产车实施日期 + if (searchInfoEO.getProductPutTime() != null) { + Long starttime = searchInfoEO.getProductPutTime().getTime(); + Long endtime = searchInfoEO.getProductPutTime().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("productPutTime").format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + //新生产车实施日期 + if (searchInfoEO.getNewproductPutTime() != null) { + Long starttime = searchInfoEO.getNewproductPutTime().getTime(); + Long endtime = searchInfoEO.getNewproductPutTime().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("newproductPutTime").format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + //新生产车实施日期 + if (searchInfoEO.getRegisterPutTime() != null) { + Long starttime = searchInfoEO.getRegisterPutTime().getTime(); + Long endtime = searchInfoEO.getRegisterPutTime().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("registerPutTime").format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + //被代替标准号 + if (StringUtil.isNotBlank(searchInfoEO.getReplacedStandNum())) { + boolQueryBuilder.must(QueryBuilders.matchQuery(replacedStandNumStr, searchInfoEO.getReplacedStandNum())); + } + //关键词 + if (StringUtil.isNotBlank(searchInfoEO.getTags())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("standTag", searchInfoEO.getTags())); + } + //所属类别,国内外标准, 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getCategory())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getCategory().equals("all") && !searchInfoEO.getCategory().equals("[]")) { + boolQueryBuilder.must(QueryBuilders.matchQuery("category", searchInfoEO.getCategory())); + } + } + //发布时间范围 + if (searchInfoEO.getIssueTimeSt() != null || searchInfoEO.getIssueTimeEd() != null) { + Long starttime = 0L; + Long endtime = 0L; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (searchInfoEO.getIssueTimeSt() != null) { + starttime = searchInfoEO.getIssueTimeSt().getTime(); + } else { + starttime = sdf.parse("1970-01-01 00:00:00").getTime(); + } + if (searchInfoEO.getIssueTimeEd() != null) { + endtime = searchInfoEO.getIssueTimeEd().getTime(); + } else { + endtime = sdf.parse("2999-01-01 00:00:00").getTime(); + } + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + if (searchInfoEO.getPutTimeSt() != null || searchInfoEO.getPutTimeEd() != null) { + Long starttime = 0L; + Long endtime = 0L; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (searchInfoEO.getPutTimeSt() != null) { + starttime = searchInfoEO.getPutTimeSt().getTime(); + } else { + starttime = sdf.parse("1970-01-01 00:00:00").getTime(); + } + if (searchInfoEO.getPutTimeEd() != null) { + endtime = searchInfoEO.getPutTimeEd().getTime(); + } else { + endtime = sdf.parse("2999-01-01 00:00:00").getTime(); + } + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(PUT_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + querySeniorMsg(searchInfoEO,boolQueryBuilder); + return boolQueryBuilder; + } + + //检索企业标准数据 + /** + * boolQueryBuilder :must + * */ + public BoolQueryBuilder queryBussStandMsg(SeniorSearchInfoEO searchInfoEO, BoolQueryBuilder boolQueryBuilder, SearchRequestBuilder searchRequestBuilder) throws Exception{ + String nameshowStr = "nameshow"; + String replacedStandNumStr = "replaced_stand_num"; + String replaceStandNumStr = "replace_stand_num"; + // 高级搜索项,只针对标准 + //分类代号 + if (StringUtil.isNotBlank(searchInfoEO.getClassifyCode())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("classifyCode", searchInfoEO.getClassifyCode())); + } + //编号,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getStandNumber())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standNumber", "*"+searchInfoEO.getStandNumber()+"*")); + } + //名称,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getNameShow())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery(nameshowStr, "*"+searchInfoEO.getNameShow()+"*")); + } + //标准英文名称 + if (StringUtil.isNotBlank(searchInfoEO.getStandEnName())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("standEnName", searchInfoEO.getStandEnName())); + } + if (searchInfoEO.getPutYear() != null && StringUtils.isNotEmpty(searchInfoEO.getPutYear())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("putYear", "*"+searchInfoEO.getPutYear()+"*")); + } + //代替标准号 + if (StringUtil.isNotBlank(searchInfoEO.getReplaceStandNum())) { + boolQueryBuilder.must(QueryBuilders.matchQuery(replaceStandNumStr, searchInfoEO.getReplaceStandNum())); + } + //主起草部门 + if (StringUtil.isNotBlank(searchInfoEO.getZQCBM())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("ZQCBM", searchInfoEO.getZQCBM())); + } + //被代替标准号 + if (StringUtil.isNotBlank(searchInfoEO.getReplacedStandNum())) { + boolQueryBuilder.must(QueryBuilders.matchQuery(replacedStandNumStr, searchInfoEO.getReplacedStandNum())); + } + //标准状态,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getStandState())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getStandState().equals("all") && !searchInfoEO.getStandState().equals("[]")) { + String[] arrlist = searchInfoEO.getStandState().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("statecode.keyword", arrlist)); + //boolQueryBuilder.must(QueryBuilders.matchQuery("statecode", searchInfoEO.getStandState())); + } + } + //发布日期 + if (searchInfoEO.getIssueTime() != null) { + Long starttime = searchInfoEO.getIssueTime().getTime(); + Long endtime = searchInfoEO.getIssueTime().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + //实施日期,国内外标准,国内外法规,企业标准 有此属性 + if (searchInfoEO.getPutTime() != null) { + Long starttime = searchInfoEO.getPutTime().getTime(); + Long endtime = searchInfoEO.getPutTime().getTime(); + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("put_time").format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + //国家,国内外标准,国内外法规有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getCountry())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getCountry().equals("all") && !searchInfoEO.getCountry().equals("[]") ) { + String[] arrlist = searchInfoEO.getCountry().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("country.keyword", arrlist)); + } + } + //标准类别,国内外标准有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getStandSort())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getStandSort().equals("all")&& !searchInfoEO.getStandSort().equals("[]")) { + String[] arrlist = searchInfoEO.getStandSort().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("stand_sort.keyword", arrlist)); + //boolQueryBuilder.must(QueryBuilders.matchQuery("stand_sort", searchInfoEO.getStandSort())); + } + } + //发布时间范围 + if (searchInfoEO.getIssueTimeSt() != null || searchInfoEO.getIssueTimeEd() != null) { + Long starttime = 0L; + Long endtime = 0L; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (searchInfoEO.getIssueTimeSt() != null) { + starttime = searchInfoEO.getIssueTimeSt().getTime(); + } else { + starttime = sdf.parse("1970-01-01 00:00:00").getTime(); + } + if (searchInfoEO.getIssueTimeEd() != null) { + endtime = searchInfoEO.getIssueTimeEd().getTime(); + } else { + endtime = sdf.parse("2999-01-01 00:00:00").getTime(); + } + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + if (searchInfoEO.getPutTimeSt() != null || searchInfoEO.getPutTimeEd() != null) { + Long starttime = 0L; + Long endtime = 0L; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (searchInfoEO.getPutTimeSt() != null) { + starttime = searchInfoEO.getPutTimeSt().getTime(); + } else { + starttime = sdf.parse("1970-01-01 00:00:00").getTime(); + } + if (searchInfoEO.getPutTimeEd() != null) { + endtime = searchInfoEO.getPutTimeEd().getTime(); + } else { + endtime = sdf.parse("2999-01-01 00:00:00").getTime(); + } + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(PUT_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + querySeniorMsg(searchInfoEO,boolQueryBuilder); + return boolQueryBuilder; + } + + //结果中检索 + public QueryBuilder queryInResult(SeniorSearchInfoEO searchInfoEO){ + // 记录搜索记录到数据库中 + QueryBuilder multiQueryBuilder = QueryBuilders.multiMatchQuery(""); + switch (searchInfoEO.getSelectIndex()){ + case "stand": + multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + numbershowSplit,nameshowSplit,numbershowStr,nameshowStr,"numberExpNull","standSortShow","standstateshow","countryShow","standEnName", + "synopsis","baseSearchContent",content,"CYSDShow","CLLXShow","standstateshow","ZRLXShow","stand_name","stand_number","citeStand","DTBJH","FGXXSXXXShow","CBBH","YYBJ","XGLC","synopsis","isRelateAccess","GKDWShow","CYSDShow","FBJGShow","ZRLXShow","GXHBQShow","GZZXXName","YQLXShow","FGWHRName","ZRBMName","XGBMShow","SVPPSName","FOShow","XMPGJSShow","BDTBZBH","BYYBJ","issue_time","ZCCSSRQ","XCXSSRQ","EOPSSRQ").minimumShouldMatch("100%"); + break; + case "laws": + multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + numbershowSplit,nameshowSplit,nameshowStr,numbershowStr,"numberExpNull","standstateshow","countryShow", "natureShow", "replace_laws_num", + "synopsis","standEnName",replacedStandNumStr,"baseSearchContent",content,"CYSDShow","SYCLLXShow","standstateshow","ZRLXShow","stand_number","isRelateAccess","YQLXShow","SYCLLXShow","GXHBQShow","ZCGCSShow","FBJGShow","SVPPSName","XGBMShow","ZRBMShow","FOShow","GKGLBMShow","WSSFCYShow","replaceLawsNum","replacedLawsNum","XMPGJSShow","issue_time","ZCCSSRQ","XCXSSRQ","EOPSSRQ","XGLC").minimumShouldMatch("100%"); + break; + case "bussstand": + multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + numbershowSplit,nameshowSplit,numbershowStr,nameshowStr,"numberExpNull","standstateshow", "standEnName",replaceStandNumStr, + replacedStandNumStr,"countryShow","synopsis","standSortShow","ZQCBMShow","ZQCBM","stand_status", + "baseSearchContent",content,"numbershow","nameshow","standstateshow","issue_time","replaceStandNum","replacedStandNum","QBMJShow","QBSQShow","XHQBMShow","SVPPSName","XGBMName","ZYQCRShow","ZRBMShow","ZQCBMName","QTQCRShow","content","FSRQString","FZRQString","put_time","XGLC","WFSPJSName").minimumShouldMatch("100%"); + break; + default: break; + } + return multiQueryBuilder; + } + + /** + * @Author yangxuenan + * @Description 循环统计 + * Date 2018/12/21 10:16 + * @Param [searchRequestBuilder, searchInfoEO] + * @return void + **/ + public List> countStandSearchResult(SearchRequestBuilder searchRequestBuilder, SeniorSearchInfoEO searchInfoEO){ + List> result = new ArrayList<>(); + // 循环统计各种类型数据 + String[] seniortype; + if("stand".equals(searchInfoEO.getSelectIndex())) { + String[] seniortypeStand = {"standSort", "statecode","CYSD","ZRLX","CLLX","CBCD"}; + seniortype = seniortypeStand.clone(); + } else if("laws".equals(searchInfoEO.getSelectIndex())){ + String[] seniortypeLaws = {"country","statecode","SYCLLX","ZRLX","WSSFCY"}; + seniortype = seniortypeLaws.clone(); + } else if ("bussstand".equals(searchInfoEO.getSelectIndex())) { + String[] seniortypeBuss = {"statecode","ZQCBM"}; + seniortype = seniortypeBuss.clone(); + } else { + String[] seniortypeMsg = {"module"}; + seniortype = seniortypeMsg.clone(); + } + Map map = new HashMap<>(); + for (int i = 0; i < seniortype.length; i++) { + //分组依靠关键字terms + TermsAggregationBuilder aggregationBuilders = AggregationBuilders.terms("by_" + seniortype[i]).field(seniortype[i] + ".keyword").size(1000); + searchRequestBuilder.addAggregation(aggregationBuilders); + } + // 获取查询到的结果 + SearchResponse response = searchRequestBuilder.get(); + result = SearchResponseToList(response); + searchInfoEO.getPager().setRowCount((int) response.getHits().getTotalHits()); + Map aggmap = response.getAggregations().asMap(); + if (!result.isEmpty()) { + for (int i = 0; i < seniortype.length; i++) { + //分组后得到的数据整合 + Object results = aggmap.get("by_" + seniortype[i]); + if(results instanceof StringTerms){ + StringTerms stResult = (StringTerms) results; + Map submap = new HashMap<>(); + for (StringTerms.Bucket bucket : stResult.getBuckets()) { + // 多选处理,当前全部允许多选 + String keyname = bucket.getKeyAsString(); + String[] keynamelist = keyname.split(","); + // 对于属性允许多选,此处做出处理 + if(keynamelist.length>0){ + for (String itemkeyname: keynamelist){ + // put 之前判断是否已存在该key ,如果不存在,直接放入值,如果存在,需要进行一个累加 + if(submap.containsKey(itemkeyname)){ + submap.put(itemkeyname, (long)submap.get(itemkeyname)+ bucket.getDocCount()); + } + else { + submap.put(itemkeyname, bucket.getDocCount()); + } + } + } + else { + if(submap.containsKey(keyname)){ + submap.put(keyname, (long)submap.get(keyname)+ bucket.getDocCount()); + } + else { + submap.put(keyname, bucket.getDocCount()); + } + } + } + map.put(seniortype[i], submap); + } + else{ + Map submap = new HashMap<>(); + map.put(seniortype[i], submap); + } + + } + result.get(0).put("groupdata", map); + } + return result; + } + + @Override + public List> SearchResponseToList(SearchResponse searchResponse) { + List> sourceList = new ArrayList>(); + for (SearchHit searchHit : searchResponse.getHits().getHits()) { + searchHit.getSourceAsMap().put("id", searchHit.getId()); + sourceList.add(searchHit.getSourceAsMap()); + } + return sourceList; + } + + @Override + public Map selectGroupdata(SeniorSearchInfoEO searchInfoEO){ + // 按标准性质统计 + String []index={"stand","bussstand","laws"}; + String []seniortype = {"country","stand_sort","energy_kind","adopt_extent","statecode"}; + Map map = new HashMap<>(); + for(int i=0;i submap = new HashMap<>(); + for (StringTerms.Bucket bucket : result.getBuckets()) { + submap.put(bucket.getKeyAsString(),bucket.getDocCount()); + } + map.put(seniortype[i],submap); + } + return map; + } + + @Override + public String [] searchIdToImport(SeniorSearchInfoEO searchInfoEO) { + List> result = new ArrayList<>(); + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + String numbershowStr = "numbershow"; + String nameshowStr = "nameshow"; + String replacedStandNumStr = "replaced_stand_num"; + String replaceStandNumStr = "replace_stand_num"; + if(StringUtil.isNotBlank(searchInfoEO.getSelectKey())){ + switch (searchInfoEO.getSelectKey()){ + // 修改过后,前台不会传 all + case "all": + boolQueryBuilder.should(QueryBuilders.matchPhraseQuery(numbershowStr,searchInfoEO.getSelectValue())); + boolQueryBuilder.should(QueryBuilders.matchQuery(nameshowStr,searchInfoEO.getSelectValue())); + boolQueryBuilder.should(QueryBuilders.matchQuery("standstateshow",searchInfoEO.getSelectValue())); + boolQueryBuilder.should(QueryBuilders.matchQuery("lawsstateshow",searchInfoEO.getSelectValue())); + boolQueryBuilder.should(QueryBuilders.matchQuery("applyarcticshow",searchInfoEO.getSelectValue())); + break; + case "standNumber": + case "lawsNumber": + case "bussstandsNumber": + if(StringUtil.isNotBlank(searchInfoEO.getSelectValue())){ + boolQueryBuilder.must(QueryBuilders.matchPhraseQuery(numbershowStr,searchInfoEO.getSelectValue())); + } + break; + case "standName": + case "lawsName": + case "bussstandName": + if(StringUtil.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery(nameshowStr, searchInfoEO.getSelectValue())); + } + break; + case "standState": + if(StringUtil.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("standstateshow", searchInfoEO.getSelectValue())); + } + break; + case "standFile": + //标准正文 暂缺 + break; + case "applyArctic": + if(StringUtil.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("applyarcticshow", searchInfoEO.getSelectValue())); + } + break; + case "issueTime": + if(StringUtil.isNotBlank(searchInfoEO.getSelectValue())) { + RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(searchInfoEO.getSelectStartTime().getTime()).to(searchInfoEO.getSelectEndTime().getTime()).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilder); + } + break; + case "putTime": + if(StringUtil.isNotBlank(searchInfoEO.getSelectValue())) { + RangeQueryBuilder rangeQueryBuilders = QueryBuilders.rangeQuery("put_time").format(EPOCH_MILLIS).from(searchInfoEO.getSelectStartTime().getTime()).to(searchInfoEO.getSelectEndTime().getTime()).includeLower(true).includeUpper(true); + boolQueryBuilder.filter(rangeQueryBuilders); + } + break; + case "draftUser": + if(StringUtil.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("draft_user", searchInfoEO.getSelectValue())); + } + break; + case "draftingUnit": + if(StringUtil.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("drafting_unit", searchInfoEO.getSelectValue())); + } + break; + case "replaceStandNum": + if(StringUtil.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery(replaceStandNumStr, searchInfoEO.getSelectValue())); + } + break; + case "replacedStandNum": + if(StringUtil.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery(replacedStandNumStr, searchInfoEO.getSelectValue())); + } + break; + case "msgTitle": + if(StringUtil.isNotBlank(searchInfoEO.getSelectValue())) { + boolQueryBuilder.must(QueryBuilders.matchQuery("title", searchInfoEO.getSelectValue())); + } + break; + default:break; + } + } + searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex()) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .setFrom(0).setSize(10000); + + boolQueryBuilder.must(QueryBuilders.matchQuery("validFlag", 0)); + + if(searchInfoEO.getSelectIndex().equals("stand")) { + // 高级搜索项,只针对标准 + //标准性质,国内外标准,法规有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getNature())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getNature().equals("all") && !searchInfoEO.getNature().equals("[]")) { + String[] arrlist = searchInfoEO.getNature().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("nature.keyword", arrlist)); + } + } + //国家,国内外标准,国内外法规有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getCountry())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getCountry().equals("all") && !searchInfoEO.getCountry().equals("[]")) { + String[] arrlist = searchInfoEO.getCountry().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("country.keyword", arrlist)); + } + } + //标准类别,国内外标准有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getStandSort())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getStandSort().equals("all") && !searchInfoEO.getStandSort().equals("[]")) { + String[] arrlist = searchInfoEO.getStandSort().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("stand_sort.keyword", arrlist)); + } + } + //编号,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getNumberShow())) { + boolQueryBuilder.must(QueryBuilders.matchQuery(numbershowStr, searchInfoEO.getNumberShow())); + } + //名称,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getNameShow())) { + boolQueryBuilder.must(QueryBuilders.matchQuery(nameshowStr, searchInfoEO.getNameShow())); + } + //适用认证,国内外标准,国内外法规,企业标准 有此属性 录入可多选 + if (StringUtil.isNotBlank(searchInfoEO.getApplyArctic())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getApplyArctic().equals("all") && !searchInfoEO.getApplyArctic().equals("[]")) { + boolQueryBuilder.must(QueryBuilders.matchQuery("apply_arctic", searchInfoEO.getApplyArctic())); + } + } + + //认证类型,国内外标准,国内外法规 有此属性 录入可多选 + if (StringUtil.isNotBlank(searchInfoEO.getApplyAuth())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getApplyAuth().equals("all") && !searchInfoEO.getApplyAuth().equals("[]")) { + boolQueryBuilder.must(QueryBuilders.matchQuery("apply_auth", searchInfoEO.getApplyAuth())); + } + } + //所属类别,国内外标准, 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getCategory())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getCategory().equals("all") && !searchInfoEO.getCategory().equals("[]")) { + boolQueryBuilder.must(QueryBuilders.matchQuery("category", searchInfoEO.getCategory())); + } + } + //能源种类,国内外标准,国内外法规,企业标准 有此属性 录入可多选 + if (StringUtil.isNotBlank(searchInfoEO.getEnergyKind())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getEnergyKind().equals("all") && !searchInfoEO.getEnergyKind().equals("[]")) { + boolQueryBuilder.must(QueryBuilders.matchQuery("energy_kind", searchInfoEO.getEnergyKind())); + } + } + //采标程度,国内外标准, 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getAdoptExtent())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getAdoptExtent().equals("all") && !searchInfoEO.getAdoptExtent().equals("[]")) { + /*String[] arrlist = searchInfoEO.getAdoptExtent().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("adopt_extent", arrlist));*/ + boolQueryBuilder.must(QueryBuilders.matchQuery("adopt_extent", searchInfoEO.getAdoptExtent())); + } + } + //标准状态,国内外标准,国内外法规,企业标准 有此属性 + if (StringUtil.isNotBlank(searchInfoEO.getStandState())) { + // 如果等于All,相当于不限制,查询全部 + if (!searchInfoEO.getStandState().equals("all") && !searchInfoEO.getStandState().equals("[]")) { + /*String[] arrlist = searchInfoEO.getStandState().split(","); + boolQueryBuilder.must(QueryBuilders.termsQuery("stateCode", arrlist));*/ + boolQueryBuilder.must(QueryBuilders.matchQuery("statecode", searchInfoEO.getStandState())); + } + } + } + searchRequestBuilder.setQuery(boolQueryBuilder); + // 获取查询到的结果 + SearchResponse response = searchRequestBuilder.get(); + result = SearchResponseToList(response); + String [] resultid = new String[result.size()]; + for(int i=0;i item = result.get(i); + resultid[i] = item.get("id").toString(); + } + return resultid; + } + + @Override + public List> searchSarBykeyAndHighLight(SeniorSearchInfoEO searchInfoEO) throws Exception { +// if () + List> result = new ArrayList<>(); + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + // 记录搜索记录到数据库中 + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){ + QueryBuilder multiQueryBuilder = QueryBuilders.multiMatchQuery(""); + multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), + "title","textContent","issue_time" + ).minimumShouldMatch("100%").field("title",10f); + boolQueryBuilder.must(multiQueryBuilder); +// boolQueryBuilder.should() + } + //在结果中检索 + if (StringUtils.isNotEmpty(searchInfoEO.getResultKeyword())) { + QueryBuilder multiQuery = queryInResult(searchInfoEO); + boolQueryBuilder.must(multiQuery); + } + HighlightBuilder hiBuilder=new HighlightBuilder(); + HighlightBuilder.Field highlightTitle = new HighlightBuilder.Field("title"); + hiBuilder.field(highlightTitle); + HighlightBuilder.Field highlightUser = new HighlightBuilder.Field("textContent"); + hiBuilder.field(highlightUser); + HighlightBuilder.Field highlightDate = new HighlightBuilder.Field("issue_time"); + hiBuilder.field(highlightDate); + hiBuilder.preTags(""); + hiBuilder.postTags(""); + searchRequestBuilder = client.prepareSearch("fulltextserch") + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .highlighter(hiBuilder) + .setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize()) + .setSize(searchInfoEO.getPageSize()); + + // boolQueryBuilder.must(QueryBuilders.matchQuery("valid_flag", 0)); +// boolQueryBuilder.should(boolQueryBuilderShould); + searchRequestBuilder.setQuery(boolQueryBuilder); + // 获取查询到的结果 + SearchResponse response = searchRequestBuilder.get(); + for (SearchHit searchHit : response.getHits().getHits()) { + searchHit.getSourceAsMap().put("id", searchHit.getId()); + Map sourceAsMap = searchHit.getSourceAsMap(); + //解析高亮字段 + Map highlightFields = searchHit.getHighlightFields(); + HighlightField field= highlightFields.get("title"); + if(field!= null){ + Text[] fragments = field.fragments(); + String n_field = ""; + for (Text fragment : fragments) { + n_field += fragment; + } + //高亮标题覆盖原标题 + sourceAsMap.put("title",n_field); + } + + Map highlightFieldsnameshowStr = searchHit.getHighlightFields(); + HighlightField fieldnameshowStr= highlightFieldsnameshowStr.get("textContent"); + if(fieldnameshowStr!= null){ + Text[] fragments = fieldnameshowStr.fragments(); + String n_field = ""; + for (Text fragment : fragments) { + n_field += fragment; + } + //高亮标题覆盖原标题 + sourceAsMap.put("textContent",n_field); + } + //发布日期添加高亮 +// Map highlightFieldsDatehowStr = searchHit.getHighlightFields(); +// HighlightField fieldDateshowStr= highlightFieldsDatehowStr.get("issue_time"); +// if(fieldDateshowStr!= null){ +// Text[] fragments = fieldDateshowStr.fragments(); +// String n_field = ""; +// for (Text fragment : fragments) { +// n_field += fragment; +// } +// //高亮标题覆盖原标题 +// sourceAsMap.put("issue_time",n_field); +// } + result.add(sourceAsMap); + } + searchInfoEO.getPager().setRowCount((int) response.getHits().getTotalHits()); + return result; + } + + + @Override + public List> searchSarBykeyAndHighLightNumber(SeniorSearchInfoEO searchInfoEO) throws Exception { + String real = searchInfoEO.getSelectValue(); + String[] values = searchInfoEO.getSelectValue().split(" "); + String value = ""; + String select = ""; + int i = 0; + for (String v: values){ + if(i==0) { + value = v; + }else{ + select = select + " " + v; + } + i++; + } + searchInfoEO.setSelectValue(select); + List> result = new ArrayList<>(); + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + // 记录搜索记录到数据库中 + BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery(); + BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery(); + QueryBuilder multiQueryBuilder; + multiQueryBuilder = QueryBuilders.multiMatchQuery(value, + "title","textContent","issue_time").minimumShouldMatch("100%").field("title",1f); + boolQueryMust.must(multiQueryBuilder); + boolQueryShould.should(QueryBuilders.wildcardQuery("title", "*"+searchInfoEO.getSelectValue()+"*").boost(10f)) + .should(QueryBuilders.wildcardQuery("textContent", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("issue_time", "*"+searchInfoEO.getSelectValue()+"*")) + .should(multiQueryBuilder); + boolQueryBuilder.should(boolQueryShould); + //在结果中检索 +// boolQueryBuilder.must(multiQueryBuilder); + HighlightBuilder hiBuilder=new HighlightBuilder(); + HighlightBuilder.Field highlightTitle = new HighlightBuilder.Field("title"); + hiBuilder.field(highlightTitle); + HighlightBuilder.Field highlightUser = new HighlightBuilder.Field("textContent"); + hiBuilder.field(highlightUser); + HighlightBuilder.Field highlightDate = new HighlightBuilder.Field("issue_time"); + hiBuilder.field(highlightDate); + hiBuilder.preTags(""); + hiBuilder.postTags(""); + searchRequestBuilder = client.prepareSearch("fulltextserch") + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .highlighter(hiBuilder) + .setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize()) + .setSize(searchInfoEO.getPageSize()); + + searchRequestBuilder.setQuery(boolQueryBuilder); + // 获取查询到的结果 + SearchResponse response = searchRequestBuilder.get(); + for (SearchHit searchHit : response.getHits().getHits()) { + searchHit.getSourceAsMap().put("id", searchHit.getId()); + Map sourceAsMap = searchHit.getSourceAsMap(); + //解析高亮字段 + Map highlightFields = searchHit.getHighlightFields(); + HighlightField field= highlightFields.get("title"); + if(field!= null){ + Text[] fragments = field.fragments(); + String n_field = ""; + for (Text fragment : fragments) { + n_field += fragment; + } + //高亮标题覆盖原标题 + sourceAsMap.put("title",n_field); + } + + Map highlightFieldsnameshowStr = searchHit.getHighlightFields(); + HighlightField fieldnameshowStr= highlightFieldsnameshowStr.get("textContent"); + if(fieldnameshowStr!= null){ + Text[] fragments = fieldnameshowStr.fragments(); + String n_field = ""; + for (Text fragment : fragments) { + n_field += fragment; + } + //高亮标题覆盖原标题 + sourceAsMap.put("textContent",n_field); + } + result.add(sourceAsMap); + } + searchInfoEO.getPager().setRowCount((int) response.getHits().getTotalHits()); + return result; + } +} + + + +// multiQueryBuilder = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(), +// numbershowSplit,nameshowSplit,numbershowStr,nameshowStr,"numberExpNull","standstateshow", "standEnName",replaceStandNumStr, +// replacedStandNumStr,"countryShow","synopsis","standSortShow","putYear","firstPutTime","ZQCBMShow","ZQCBM","stand_status", +// "baseSearchContent",content,"numbershow","nameshow","standstateshow","issue_time","FORMENDTIME","replaceStandNum","replacedStandNum","QBMJ","QBSQShow","XHQBMShow","SVPPSName","XGBMName","ZYQCRShow","ZRBMShow","ZQCBMName","QTQCRShow","XGLC").minimumShouldMatch("100%"); +// boolQueryMust.must(multiQueryBuilder); +// boolQueryShould.should(QueryBuilders.wildcardQuery(nameshowStr, "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery(numbershowStr, "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery(numbershowSplit, "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery(nameshowSplit, "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("ZQCBMShow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("standstateshow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("ZQCBM", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("stand_status", "*"+searchInfoEO.getSelectValue()+"*")) +// +// .should(QueryBuilders.wildcardQuery("numbershow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("nameshow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("standstateshow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("issue_time", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("FORMENDTIME", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("replaceStandNum", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("replacedStandNum", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("QBMJ", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("QBSQShow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("XHQBMShow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("SVPPSName", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("XGBMName", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("ZYQCRShow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("ZRBMShow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("ZQCBMName", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("QTQCRShow", "*"+searchInfoEO.getSelectValue()+"*")) +// .should(QueryBuilders.wildcardQuery("XGLC", "*"+searchInfoEO.getSelectValue()+"*")) diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/impl/StandLawsSearchServiceImpl.java b/adc-da-search/src/main/java/com/adc/da/search/service/impl/StandLawsSearchServiceImpl.java new file mode 100644 index 00000000..e7151d52 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/service/impl/StandLawsSearchServiceImpl.java @@ -0,0 +1,490 @@ +package com.adc.da.search.service.impl; + +import com.adc.da.search.entity.FullTextSearchEO; +import com.adc.da.search.entity.StandLawsEO; +import com.adc.da.search.service.ElasticsearchService; +import com.adc.da.search.service.StandLawsSearchService; +import com.adc.da.util.utils.DateUtils; +import com.adc.da.util.utils.StringUtils; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import org.elasticsearch.client.transport.TransportClient; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +@Component +public class StandLawsSearchServiceImpl implements StandLawsSearchService { + private static final Logger logger = LoggerFactory.getLogger(StandLawsSearchServiceImpl.class); + + + @Autowired + private TransportClient transportClient; + + private TransportClient client; + + @PostConstruct + public void init() { + client = this.transportClient; + } + + @Autowired + private ElasticsearchService elasticsearchService; + + @Override + public String addStandLawsSearch(StandLawsEO standLawsEO) { + String indexstate = ""; + //if(elasticsearchService.isIndexExist(standLawsEO.getType())){ + indexstate = elasticsearchService.addData((JSONObject) JSON.toJSON(standLawsEO),standLawsEO.getType(),standLawsEO.getType(),standLawsEO.getId()); + // 方便全文检索,重新建索引 + FullTextSearchEO fullTextSearchEO =getFullTextSearch(standLawsEO); + indexstate = elasticsearchService.addData((JSONObject) JSON.toJSON(fullTextSearchEO),"fulltextserch","fulltextserch",fullTextSearchEO.getId()); + return indexstate; + } + + @Override + public String addStandLawsSearchForMap(Map attrInfoMap) { + String indexstate = ""; + String type = String.valueOf(attrInfoMap.get("type")); + indexstate = elasticsearchService.addDataForMap(attrInfoMap,type,type,String.valueOf(attrInfoMap.get("id"))); + if ("stand".equals(type) || "laws".equals(type) || "bussstand".equals(type)) { + // 方便全文检索,重新建索引 + Map fullTextSearchEO =getFullTextSearchForMap(attrInfoMap); + indexstate = elasticsearchService.addDataForMap(fullTextSearchEO,"fulltextserch","fulltextserch",String.valueOf(fullTextSearchEO.get("id"))); + } + + return indexstate; + } + + @Override + public String updateStandLawsSearchForMap(Map attrInfoMap){ + Set keys = attrInfoMap.keySet(); + for (String key:keys) { + String value = String.valueOf(attrInfoMap.get(key)); + if (StringUtils.isNotBlank(value) && !"null".equals(value)){ + value = value.replace(","," , "); + attrInfoMap.put(key,value); + } + } + String result = ""; + // 先判断索引是否存在 + String type = String.valueOf(attrInfoMap.get("type")); + String id = String.valueOf(attrInfoMap.get("id")); + if(elasticsearchService.isIndexExist(type)){ + Map indexstate = elasticsearchService.searchDataById(type,type,id,null); + if(indexstate == null || indexstate.isEmpty()){ + result = elasticsearchService.addDataForMap(attrInfoMap,type,type,id); + } else { + result = elasticsearchService.updateDataByIdForMap(attrInfoMap,type,type,id); + } + } else { + result = elasticsearchService.addDataForMap(attrInfoMap,type,type,id); + } + if ("stand".equals(type) || "laws".equals(type) || "bussstand".equals(type)) { + // 方便全文检索,重新建索引 + Map fullTextSearchEO =getFullTextSearchForMap(attrInfoMap); + if(elasticsearchService.isIndexExist("fulltextserch")){ + Map indexstate = elasticsearchService.searchDataById("fulltextserch","fulltextserch",id,null); + if(indexstate == null || indexstate.isEmpty()){ + result = elasticsearchService.addDataForMap(fullTextSearchEO,"fulltextserch","fulltextserch",id); + } else { + result = elasticsearchService.updateDataByIdForMap(fullTextSearchEO,"fulltextserch","fulltextserch",id); + } + } else { + result = elasticsearchService.updateDataByIdForMap(fullTextSearchEO,"fulltextserch","fulltextserch",id); + } + } + return result; + } + + + @Override + public String deleteStandLawsSearch(StandLawsEO standLawsEO){ + String result = ""; + // 先判断索引是否存在 + if(elasticsearchService.isIndexExist(standLawsEO.getType())){ + Map indexstate = elasticsearchService.searchDataById(standLawsEO.getType(),standLawsEO.getType(),standLawsEO.getId(),null); + if(indexstate != null && !indexstate.isEmpty()){ + result = elasticsearchService.deleteDataById(standLawsEO.getType(),standLawsEO.getType(),standLawsEO.getId()); + } + } + if(elasticsearchService.isIndexExist("fulltextserch")){ + Map indexstate = elasticsearchService.searchDataById("fulltextserch","fulltextserch",standLawsEO.getId(),null); + if(indexstate != null && !indexstate.isEmpty()){ + result = elasticsearchService.deleteDataById("fulltextserch","fulltextserch",standLawsEO.getId()); + } + } + return result; + } + + Map getFullTextSearchForMap(Map attrInfoMap){ + boolean isForeign = false; + Map fullTextSearchEO = new HashMap<>(); + fullTextSearchEO.put("id",String.valueOf(attrInfoMap.get("id"))); + if ("FOREIGN".equals(String.valueOf(attrInfoMap.get("standType")))){ + fullTextSearchEO.put("indexType",String.valueOf(attrInfoMap.get("standType"))); + isForeign = true; + }else { + fullTextSearchEO.put("indexType", String.valueOf(attrInfoMap.get("type"))); + } + if("stand".equals(attrInfoMap.get("type"))){ + // 标准全文 + fullTextSearchEO.put("title",attrInfoMap.get("numbershow")+" "+attrInfoMap.get("nameshow")); + + for (String key : attrInfoMap.keySet()) { + if (null == attrInfoMap.get(key) || "".equals(attrInfoMap.get(key))){ + attrInfoMap.put(key, "null"); + } + } +// fullTextSearchEO.put("issueTime",attrInfoMap.get("issueTime")); + StringBuilder contentBuilder = new StringBuilder(); +// contentBuilder.append("区域:东亚 "); + if (!isForeign) { + contentBuilder.append("适用区域:").append(attrInfoMap.get("countryShow")).append(" "); + } + contentBuilder.append("标准状态:").append(attrInfoMap.get("standstateshow")).append(" "); +// + contentBuilder.append("纳入标准法规清单的国家/地区: ").append(attrInfoMap.get("accessCountry")).append(" "); + contentBuilder.append("标准类别: ").append(attrInfoMap.get("standSortShow")).append(" "); + contentBuilder.append("标准号: ").append(attrInfoMap.get("numbershow")).append(" "); + contentBuilder.append("标准名称: ").append(attrInfoMap.get("nameshow")).append(" "); + contentBuilder.append("标准英文名称: ").append(attrInfoMap.get("standEnName")).append(" "); +// contentBuilder.append("发布日期:"+attrInfoMap.get("issueTime")+" "); + contentBuilder.append("覆盖关系: ").append(attrInfoMap.get("FGXXSXXXShow")).append(" "); + contentBuilder.append("代替标准编号: ").append(attrInfoMap.get("DTBJH")).append(" "); + if (StringUtils.isBlank(String.valueOf(attrInfoMap.get("BDTBH")))){ + contentBuilder.append("被代替标准编号: ").append(attrInfoMap.get("BDTBH")).append(" "); + }else { + contentBuilder.append("被代替标准编号: ").append(attrInfoMap.get("BDTBZBH")).append(" "); + } + contentBuilder.append("对应其他标准: ").append(attrInfoMap.get("CBBH")).append(" "); + contentBuilder.append("引用标准: ").append(attrInfoMap.get("YYBJ")).append(" "); + contentBuilder.append("被引用标准: ").append(attrInfoMap.get("BYYBJ")).append(" "); + if (isForeign){ + contentBuilder.append("等效标准: ").append(attrInfoMap.get("DXBZ")); + } + contentBuilder.append("相关流程: ").append(attrInfoMap.get("XGLC")).append(" "); + contentBuilder.append("参会记录: ").append(attrInfoMap.get("CHJL")).append(" "); + + contentBuilder.append("文本说明: ").append(attrInfoMap.get("synopsis")).append(" "); + contentBuilder.append("重要度: ").append(attrInfoMap.get("isRelateAccess")).append(" "); + if (!isForeign) { + contentBuilder.append("归口管理部门: ").append(attrInfoMap.get("GKDWShow")).append(" "); + } + if (!isForeign) { + contentBuilder.append("我司参与深度: ").append(attrInfoMap.get("CYSDShow")).append(" "); + } + if (!isForeign) { + contentBuilder.append("组织标准起草的执行机构/单位: ").append(attrInfoMap.get("FBJGShow")).append(" "); + } + contentBuilder.append("监管类型: ").append(attrInfoMap.get("ZRLXShow")).append(" "); + contentBuilder.append("适用车辆类型: ").append(attrInfoMap.get("CLLXShow")).append(" "); + contentBuilder.append("标签: ").append(attrInfoMap.get("GXHBQShow")).append(" "); + if (!isForeign) { + contentBuilder.append("工作组信息: ").append(attrInfoMap.get("GZZXXName")).append(" "); + } + contentBuilder.append("要求类型: ").append(attrInfoMap.get("YQLXShow")).append(" "); + contentBuilder.append("新车型实施日期(文本): ").append(attrInfoMap.get("XCXSSRQ")).append(" "); + contentBuilder.append("在产车实施日期(文本): ").append(attrInfoMap.get("ZCCSSRQ")).append(" "); + contentBuilder.append("EOP实施日期(文本): ").append(attrInfoMap.get("EOPSSRQ")).append(" "); + contentBuilder.append("法规维护人: ").append(attrInfoMap.get("FGWHRName")).append(" "); + contentBuilder.append("责任部门: ").append(attrInfoMap.get("ZRBMShow")).append(" "); + contentBuilder.append("相关部门: ").append(attrInfoMap.get("XGBMShow")).append(" "); + contentBuilder.append("SVPPS: ").append(attrInfoMap.get("SVPPSName")).append(" "); + contentBuilder.append("FO: ").append(attrInfoMap.get("FOShow")).append(" "); + contentBuilder.append("项目评估角色: ").append(attrInfoMap.get("XMPGJSShow")).append(" "); + if (attrInfoMap.containsKey("content")){ + if (null !=attrInfoMap.get("content") && StringUtils.isNotBlank(String.valueOf(attrInfoMap.get("content")))){ + String con = String.valueOf(attrInfoMap.get("content")); + con = con.replace(",",""); + if (StringUtils.isBlank(con)){ + attrInfoMap.put("content","--"); + } + } + } + contentBuilder.append("标准文本: ").append(attrInfoMap.get("content")).append(" "); + StringBuilder textContent = replaceAll(contentBuilder, "null", "--"); + fullTextSearchEO.put("textContent",textContent.toString()); + if (null != attrInfoMap.get("issueTime") && !"".equals(attrInfoMap.get("issueTime")) && !"null".equals(attrInfoMap.get("issueTime"))) { + fullTextSearchEO.put("issue_time", attrInfoMap.get("issueTime")); + }else { + fullTextSearchEO.put("issue_time", "--"); + } + } else if("laws".equals(attrInfoMap.get("type"))){ + // 政策全文 + for (String key : attrInfoMap.keySet()) { + if (null == attrInfoMap.get(key) || "".equals(attrInfoMap.get(key))){ + attrInfoMap.put(key, "null"); + } + } + fullTextSearchEO.put("title",attrInfoMap.get("numbershow")+" "+attrInfoMap.get("nameshow")); + StringBuilder contentBuilder = new StringBuilder(); + contentBuilder.append("适用区域: ").append(attrInfoMap.get("countryShow")).append(" "); + contentBuilder.append("政策状态: ").append(attrInfoMap.get("standstateshow")).append(" "); + contentBuilder.append("政策号: ").append(attrInfoMap.get("numbershow")).append(" "); + contentBuilder.append("政策名称: ").append(attrInfoMap.get("nameshow")).append(" "); + contentBuilder.append("英文名称: ").append(attrInfoMap.get("standEnName")).append(" "); +// contentBuilder.append("发布日期:"+attrInfoMap.get("issueTime")+" "); + contentBuilder.append("纳入标准法规清单的国家/地区: ").append(attrInfoMap.get("accessCountry")).append(" "); + contentBuilder.append("代替政策编号: ").append(attrInfoMap.get("replaceLawsNum")).append(" "); + contentBuilder.append("重要度: ").append(attrInfoMap.get("isRelateAccess")).append(" "); + contentBuilder.append("要求类型: ").append(attrInfoMap.get("YQLXShow")).append(" "); + contentBuilder.append("适用车辆类型: ").append(attrInfoMap.get("SYCLLXShow")).append(" "); +// contentBuilder.append("监管类型:"+attrInfoMap.get("")+" "); + contentBuilder.append("监管类型: ").append(attrInfoMap.get("ZRLXShow")).append(" "); + contentBuilder.append("个性化标签: ").append(attrInfoMap.get("GXHBQShow")).append(" "); + contentBuilder.append("新车型实施日期(文本): ").append(attrInfoMap.get("XCXSSRQ")).append(" "); + contentBuilder.append("在产车实施日期(文本): ").append(attrInfoMap.get("ZCCSSRQ")).append(" "); + contentBuilder.append("EOP实施日期(文本): ").append(attrInfoMap.get("EOPSSRQ")).append(" "); + contentBuilder.append("维护工程师: ").append(attrInfoMap.get("ZCGCSShow")).append(" "); + contentBuilder.append("组织标准起草的执行机构/单位: ").append(attrInfoMap.get("FBJGShow")).append(" "); + contentBuilder.append("SVPPS: ").append(attrInfoMap.get("SVPPSName")).append(" "); + contentBuilder.append("相关部门: ").append(attrInfoMap.get("XGBMShow")).append(" "); + contentBuilder.append("责任部门: ").append(attrInfoMap.get("ZRBMShow")).append(" "); + contentBuilder.append("FO: ").append(attrInfoMap.get("FOShow")).append(" "); + contentBuilder.append("归口管理部门: ").append(attrInfoMap.get("GKGLBMShow")).append(" "); + contentBuilder.append("我司是否参与: ").append(attrInfoMap.get("WSSFCYShow")).append(" "); + contentBuilder.append("相关流程: ").append(attrInfoMap.get("XGLC")).append(" "); +// contentBuilder.append("相关资料:"+attrInfoMap.get("")+" "); + if (attrInfoMap.containsKey("content")){ + if (null !=attrInfoMap.get("content") && StringUtils.isNotBlank(String.valueOf(attrInfoMap.get("content")))){ + String con = String.valueOf(attrInfoMap.get("content")); + con = con.replace(",",""); + if (StringUtils.isBlank(con)){ + attrInfoMap.put("content","--"); + } + } + } + contentBuilder.append("标准文本: ").append(attrInfoMap.get("content")).append(" "); + StringBuilder textContent = replaceAll(contentBuilder, "null", "--"); + fullTextSearchEO.put("textContent",textContent.toString()); + if (null != attrInfoMap.get("issue_time") && !"".equals(attrInfoMap.get("issue_time")) && !"null".equals(attrInfoMap.get("issue_time"))) { + fullTextSearchEO.put("issue_time", attrInfoMap.get("issue_time")); + }else { + fullTextSearchEO.put("issue_time", "--"); + } + }else if ("bussstand".equals(attrInfoMap.get("type"))){ + + for (String key : attrInfoMap.keySet()) { + if (null == attrInfoMap.get(key) || "".equals(attrInfoMap.get(key))){ + attrInfoMap.put(key, "null"); + } + } + fullTextSearchEO.put("title",attrInfoMap.get("standNumber")+" - 《"+attrInfoMap.get("nameshow")+"》"); + StringBuilder contentBuilder = new StringBuilder(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-M-dd HH:mm:ss"); + contentBuilder.append("企标编号: ").append(String.valueOf(attrInfoMap.get("numbershow"))).append(" "); + contentBuilder.append("企标名称: ").append(String.valueOf(attrInfoMap.get("nameshow"))).append(" "); + contentBuilder.append("英文名称: ").append(attrInfoMap.get("standEnName")).append(" "); + contentBuilder.append("标准状态: ").append(String.valueOf(attrInfoMap.get("standstateshow"))).append(" "); +// contentBuilder.append("发布日期:"+String.valueOf(attrInfoMap.get("issue_time"))+" "); + contentBuilder.append("标准实施日期: "); + contentBuilder.append(String.valueOf(attrInfoMap.get("put_time"))); + contentBuilder.append("代替企标编号: ").append(attrInfoMap.get("replaceStandNum")); + contentBuilder.append("被代替企标编号: ").append(attrInfoMap.get("replacedStandNum")); + contentBuilder.append("废止日期: "); + if (StringUtils.isNotBlank(String.valueOf(attrInfoMap.get("FZRQString")).trim())) { + contentBuilder.append(String.valueOf(attrInfoMap.get("FZRQString"))).append(" "); + }else{ + contentBuilder.append("--").append(" "); + } + contentBuilder.append("复审日期: "); + if (StringUtils.isNotBlank(String.valueOf(attrInfoMap.get("FSRQString")).trim())) { + contentBuilder.append(String.valueOf(attrInfoMap.get("FSRQString"))).append(" "); + }else{ + contentBuilder.append("--").append(" "); + } + contentBuilder.append("密级: ").append(String.valueOf(attrInfoMap.get("QBMJShow"))).append(" "); + contentBuilder.append("授权: ").append(String.valueOf(attrInfoMap.get("QBSQShow"))).append(" "); + contentBuilder.append("涉及会签部门: ").append(String.valueOf(attrInfoMap.get("XHQBMShow"))).append(" "); + contentBuilder.append("SVPPS: ").append(String.valueOf(attrInfoMap.get("SVPPSName"))).append(" "); + contentBuilder.append("相关部门: ").append(String.valueOf(attrInfoMap.get("XGBMShow"))).append(" "); + contentBuilder.append("主起草人: ").append(String.valueOf(attrInfoMap.get("ZYQCRShow"))).append(" "); + contentBuilder.append("起草部门: ").append(String.valueOf(attrInfoMap.get("ZRBMShow"))).append(" "); + contentBuilder.append("主起草部门: ").append(String.valueOf(attrInfoMap.get("ZQCBMName"))).append(" "); + contentBuilder.append("其他起草人: ").append(String.valueOf(attrInfoMap.get("QTQCRShow"))).append(" "); + contentBuilder.append("外发审批角色: ").append(String.valueOf(attrInfoMap.get("WFSPJSShow"))).append(" "); + contentBuilder.append("规范性引用文件: ").append(String.valueOf(attrInfoMap.get("GFXYYWJ"))).append(" "); + contentBuilder.append("相关流程: ").append(String.valueOf(attrInfoMap.get("XGLC"))).append(" "); + if (attrInfoMap.containsKey("content")){ + if (null !=attrInfoMap.get("content") && StringUtils.isNotBlank(String.valueOf(attrInfoMap.get("content")))){ + String con = String.valueOf(attrInfoMap.get("content")); + con = con.replace(",",""); + if (StringUtils.isBlank(con)){ + attrInfoMap.put("content","--"); + } + } + } + contentBuilder.append("标准文本: ").append(attrInfoMap.get("content")).append(" "); +// contentBuilder.append("相关计划:"+String.valueOf(attrInfoMap.get(""))+" "); + + StringBuilder textContent = replaceAll(contentBuilder, "null", "--"); + fullTextSearchEO.put("textContent",textContent.toString()); + if (null != attrInfoMap.get("issue_time") && !"".equals(attrInfoMap.get("issue_time")) && !"null".equals(attrInfoMap.get("issue_time"))) { + fullTextSearchEO.put("issue_time", attrInfoMap.get("issue_time")); + }else { + fullTextSearchEO.put("issue_time", "--"); + } + } + return fullTextSearchEO; + } + + FullTextSearchEO getFullTextSearch(StandLawsEO standLawsEO){ + FullTextSearchEO fullTextSearchEO = new FullTextSearchEO(); + fullTextSearchEO.setId(standLawsEO.getId()); + fullTextSearchEO.setIndexType(standLawsEO.getType()); + if(standLawsEO.getType().equals("stand")){ + // 标准全文 + fullTextSearchEO.setTitle(standLawsEO.getNumbershow()+" "+standLawsEO.getNameshow()); + fullTextSearchEO.setIssue_time(standLawsEO.getIssue_time()); + fullTextSearchEO.setIssueTimeStr(standLawsEO.getIssueTimeStr()); + fullTextSearchEO.setPut_time(standLawsEO.getPut_time()); + fullTextSearchEO.setPutTimeStr(standLawsEO.getPutTimeStr()); + StringBuilder contentBuilder = new StringBuilder(); + contentBuilder.append("区域:东亚 "); + contentBuilder.append("国家/地区:"+standLawsEO.getCountryShow()+" "); + contentBuilder.append("标准性质:"+standLawsEO.getNatureShow()+" "); + contentBuilder.append("标准状态:"+standLawsEO.getStatecodeShow()+" "); + contentBuilder.append("内容摘要:"+standLawsEO.getSynopsis()+" "); + contentBuilder.append("标准文本:"+standLawsEO.getContent()+" "); + contentBuilder.append("标准类别:"+standLawsEO.getStandSortShow()+" "); + contentBuilder.append("标准号:"+standLawsEO.getNumbershow()+" "); + contentBuilder.append("标准名称:"+standLawsEO.getNameshow()+" "); + contentBuilder.append("标准英文名称:"+standLawsEO.getStandEnName()+" "); + contentBuilder.append("发布日期:"+DateUtils.dateToString(standLawsEO.getIssue_time(),"yyyy-MM-dd")+" "); + contentBuilder.append("实施日期:"+DateUtils.dateToString(standLawsEO.getPut_time(),"yyyy-MM-dd")+" "); + //时间处理 + contentBuilder.append("新定型车实施日期:"+ DateUtils.dateToString(standLawsEO.getNewcarPutTime(),"yyyy-MM-dd")+" "); + contentBuilder.append("新生产车实施日期:"+DateUtils.dateToString(standLawsEO.getNewproductPutTime(),"yyyy-MM-dd")+" "); + contentBuilder.append("注册登记车实施日期:"+DateUtils.dateToString(standLawsEO.getRegisterPutTime(),"yyyy-MM-dd")+" "); + contentBuilder.append("在产车实施日期:"+DateUtils.dateToString(standLawsEO.getRegisterPutTime(),"yyyy-MM-dd")+" "); + //时间处理 + contentBuilder.append("适用认证:"+standLawsEO.getApplyAuthShow()+" "); + contentBuilder.append("发布部门:"+standLawsEO.getIssueUnit()+" "); + contentBuilder.append("代替标准号:"+standLawsEO.getReplace_stand_num()+" "); + contentBuilder.append("被代替标准号:"+standLawsEO.getReplaced_stand_num()+" "); + contentBuilder.append("采用国际标准号:"+standLawsEO.getInterStandNum()+" "); + contentBuilder.append("采标程度:"+standLawsEO.getAdoptExtentShow()+" "); + contentBuilder.append("适用车型:"+standLawsEO.getApplyArcticShow()+" "); + contentBuilder.append("能源种类:"+standLawsEO.getEnergyKindShow()+" "); + contentBuilder.append("起草单位:"+standLawsEO.getDrafting_unit()+" "); + contentBuilder.append("起草人:"+standLawsEO.getDraft_user()+" "); + contentBuilder.append("关键词:"+standLawsEO.getStandTag()+" "); + contentBuilder.append("备注:"+standLawsEO.getRemarks()+" "); + contentBuilder.append("责任部门:"+standLawsEO.getResponsibleUnitShow()+" "); + contentBuilder.append("所属专业领域:"+standLawsEO.getCategoryShow()+" "); + // contentBuilder.append("总成分类:"+" "); + + StringBuilder textContent = replaceAll(contentBuilder, "null", "--"); + fullTextSearchEO.setTextContent(textContent.toString()); + } else if(standLawsEO.getType().equals("bussstand")){ + //企业标准全文 + fullTextSearchEO.setTitle(standLawsEO.getNumbershow()+" "+standLawsEO.getNameshow()); + fullTextSearchEO.setIssue_time(standLawsEO.getIssue_time()); + fullTextSearchEO.setIssueTimeStr(standLawsEO.getIssueTimeStr()); + fullTextSearchEO.setPut_time(standLawsEO.getPut_time()); + fullTextSearchEO.setPutTimeStr(standLawsEO.getPutTimeStr()); + + StringBuilder contentBuilder = new StringBuilder(); + // contentBuilder.append("区域:东亚 "); + contentBuilder.append("国家:"+standLawsEO.getCountryShow()+" "); + contentBuilder.append("标准类别:"+standLawsEO.getStandSortShow()+" "); + contentBuilder.append("标准编号:"+standLawsEO.getNumbershow()+" "); + contentBuilder.append("标准名称:"+standLawsEO.getNameshow()+" "); + contentBuilder.append("标准英文名称:"+standLawsEO.getStandEnName()+" "); + contentBuilder.append("标准状态:"+standLawsEO.getStatecodeShow()+" "); + contentBuilder.append("标准性质:"+standLawsEO.getNatureShow()+" "); + // contentBuilder.append("规范性引用标准:"+standLawsEO.getNatureShow()+" "); + contentBuilder.append("责任部门:"+standLawsEO.getResponsibleUnitShow()+" "); + //contentBuilder.append("主要编制者:"+standLawsEO.getResponsibleUnitShow()+" "); + contentBuilder.append("发布日期:"+standLawsEO.getIssueTimeStr()+" "); + contentBuilder.append("实施日期:"+standLawsEO.getPutTimeStr()+" "); + contentBuilder.append("实施年份:"+standLawsEO.getPutYear()+" "); + contentBuilder.append("首发日期:"+standLawsEO.getFirstPutTime()+" "); + contentBuilder.append("标准文本:"+standLawsEO.getContent()+" "); + contentBuilder.append("适用认证:"+standLawsEO.getApplyAuthShow()+" "); + contentBuilder.append("适用车型:"+standLawsEO.getApplyArcticShow()+" "); + contentBuilder.append("能源种类:"+standLawsEO.getEnergyKindShow()+" "); + contentBuilder.append("代替标准号:"+standLawsEO.getReplace_stand_num()+" "); + contentBuilder.append("被代替标准号:"+standLawsEO.getReplaced_stand_num()+" "); + contentBuilder.append("关键词:"+standLawsEO.getStandTag()+" "); + contentBuilder.append("内容摘要:"+standLawsEO.getSynopsis()+" "); + contentBuilder.append("备注:"+standLawsEO.getRemarks()+" "); + + StringBuilder textContent = replaceAll(contentBuilder, "null", "--"); + fullTextSearchEO.setTextContent(textContent.toString()); + } else if(standLawsEO.getType().equals("laws")){ + // 政策全文 + fullTextSearchEO.setTitle(standLawsEO.getNumbershow()+" "+standLawsEO.getNameshow()); + fullTextSearchEO.setIssue_time(standLawsEO.getIssue_time()); + fullTextSearchEO.setIssueTimeStr(standLawsEO.getIssueTimeStr()); + fullTextSearchEO.setPut_time(standLawsEO.getPut_time()); + fullTextSearchEO.setPutTimeStr(standLawsEO.getPutTimeStr()); + + StringBuilder contentBuilder = new StringBuilder(); + contentBuilder.append("国家/地区:"+standLawsEO.getCountryShow()+" "); + contentBuilder.append("文件号:"+standLawsEO.getNumbershow()+" "); + contentBuilder.append("文件名称:"+standLawsEO.getNameshow()+" "); + contentBuilder.append("文件英文名称:"+standLawsEO.getStandEnName()+" "); + contentBuilder.append("文件状态:"+standLawsEO.getStatecodeShow()+" "); + contentBuilder.append("文件性质:"+standLawsEO.getNatureShow()+" "); + contentBuilder.append("发布日期:"+DateUtils.dateToString(standLawsEO.getIssue_time(),"yyyy-MM-dd")+" "); + contentBuilder.append("实施日期:"+DateUtils.dateToString(standLawsEO.getPut_time(),"yyyy-MM-dd")+" "); + //时间处理 + contentBuilder.append("新定型车实施日期:"+ DateUtils.dateToString(standLawsEO.getNewcarPutTime(),"yyyy-MM-dd")+" "); + contentBuilder.append("新生产车实施日期:"+DateUtils.dateToString(standLawsEO.getNewproductPutTime(),"yyyy-MM-dd")+" "); + contentBuilder.append("注册登记车实施日期:"+DateUtils.dateToString(standLawsEO.getRegisterPutTime(),"yyyy-MM-dd")+" "); + contentBuilder.append("在产车实施日期:"+DateUtils.dateToString(standLawsEO.getRegisterPutTime(),"yyyy-MM-dd")+" "); + //时间处理 + contentBuilder.append("发布部门:"+standLawsEO.getIssueUnit()+" "); + contentBuilder.append("责任部门:"+standLawsEO.getResponsibleUnitShow()+" "); + contentBuilder.append("文件附件全文:"+standLawsEO.getContent()+" "); + contentBuilder.append("适用车型:"+standLawsEO.getApplyArcticShow()+" "); + contentBuilder.append("适用认证:"+standLawsEO.getApplyAuthShow()+" "); + contentBuilder.append("能源种类:"+standLawsEO.getEnergyKindShow()+" "); + contentBuilder.append("所属专业领域:"+standLawsEO.getCategoryShow()+" "); + contentBuilder.append("代替标准号:"+standLawsEO.getReplace_stand_num()+" "); + contentBuilder.append("被代替标准号:"+standLawsEO.getReplaced_stand_num()+" "); + contentBuilder.append("关键词:"+standLawsEO.getStandTag()+" "); + contentBuilder.append("内容摘要:"+standLawsEO.getSynopsis()+" "); + contentBuilder.append("备注:"+standLawsEO.getRemarks()+" "); + StringBuilder textContent = replaceAll(contentBuilder, "null", "--"); + fullTextSearchEO.setTextContent(textContent.toString()); + } + return fullTextSearchEO; + } + + + /** + * 实现StringBuilder的replaceAll + * + * @param stb + * @param oldStr 被替换的字符串 + * @param newStr 替换oldStr + * @return + */ + public static StringBuilder replaceAll(StringBuilder stb, String oldStr, String newStr) { + if (stb == null || oldStr == null || newStr == null || stb.length() == 0 || oldStr.length() == 0) + return stb; + int index = stb.indexOf(oldStr); + if (index > -1 && !oldStr.equals(newStr)) { + int lastIndex = 0; + while (index > -1) { + stb.replace(index, index + oldStr.length(), newStr); + lastIndex = index + newStr.length(); + index = stb.indexOf(oldStr, lastIndex); + } + } + return stb; + } + +} diff --git a/adc-da-search/src/main/java/com/adc/da/search/util/ElasticsearchConstant.java b/adc-da-search/src/main/java/com/adc/da/search/util/ElasticsearchConstant.java new file mode 100644 index 00000000..5c3a1cd3 --- /dev/null +++ b/adc-da-search/src/main/java/com/adc/da/search/util/ElasticsearchConstant.java @@ -0,0 +1,17 @@ +package com.adc.da.search.util; + +/** + *Elasticsearch接口实现过程中用到的常量定义 + * @author gaoyan + * date 2018/08/27 + */ +public class ElasticsearchConstant { + //构造方法 + public ElasticsearchConstant() { + // 不做操作 + } + //正确删除后返回结构 + public static final String SUCCESS_DELETED = "DELETED"; + //删除过程中未找到对应数据返回结果 + public static final String HAVE_NOT_FOUND= "NOT_FOUND"; +} diff --git a/adc-da-slrs/pom.xml b/adc-da-slrs/pom.xml index 149c579f..f1af9847 100644 --- a/adc-da-slrs/pom.xml +++ b/adc-da-slrs/pom.xml @@ -11,6 +11,12 @@ adc-da-slrs + + com.adc + adc-da-search + 1.0.0 + compile + com.adc adc-da-base @@ -35,6 +41,65 @@ 3.1.0 compile + + com.adc + adc-da-util + 2.2.41 + + + org.bouncycastle + bcprov-jdk14 + + + + + + + org.apache.poi + poi + 4.1.2 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + org.apache.poi + poi-ooxml-schemas + 4.1.2 + + + xerces + xercesImpl + + + + + org.apache.poi + poi-scratchpad + 4.1.2 + + + + org.apache.pdfbox + pdfbox + 1.8.8 + + + + com.itextpdf + itextpdf + 5.5.13 + + + + com.zip4j + zip4j + system + 1.3.1 + ${basedir}/src/main/lib/zip4j-1.3.1.jar + \ No newline at end of file diff --git a/adc-da-slrs/src/main/java/com/adc/da/common/ConvertMqEO.java b/adc-da-slrs/src/main/java/com/adc/da/common/ConvertMqEO.java new file mode 100644 index 00000000..d502d72f --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/common/ConvertMqEO.java @@ -0,0 +1,223 @@ +package com.adc.da.common; + +import com.adc.da.base.entity.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.Date; + +/** + * 功能:OT_CONVERT_MQ OtConvertMqEOEntity
    + * 作者:code generator
    + * 日期: 2018-09-25
    + * 版权所有:版权归北京卡达克数据技术中心所有。
    + */ +public class ConvertMqEO extends BaseEntity { + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date modifyTime; + @org.springframework.format.annotation.DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date creationTime; + private Integer validFlag; + private String attId; + private String filePath; + private String fileOriginPath; + private String userId; + private Integer mqState; + private String mqCode; + private String id; + private String addOrUp; + + //向文件表添加信息 + private String lawsId; + private String resId; + private String convertType; + private String pdfPath; + private String pdfId; + private String fileSuffix; + private String standFileClassify; + private String oriAttId; + private String lawsFileClassify; + + private int againNum; + /** **/ + public Integer getValidFlag() { + return this.validFlag; + } + + /** **/ + public void setValidFlag(Integer validFlag) { + this.validFlag = validFlag; + } + + /** **/ + public String getAttId() { + return this.attId; + } + + /** **/ + public void setAttId(String attId) { + this.attId = attId; + } + + /** **/ + public String getFilePath() { + return this.filePath; + } + + /** **/ + public void setFilePath(String filePath) { + this.filePath = filePath; + } + + /** **/ + public String getUserId() { + return this.userId; + } + + /** **/ + public void setUserId(String userId) { + this.userId = userId; + } + + /** **/ + public Integer getMqState() { + return this.mqState; + } + + /** **/ + public void setMqState(Integer mqState) { + this.mqState = mqState; + } + + /** **/ + public String getMqCode() { + return this.mqCode; + } + + /** **/ + public void setMqCode(String mqCode) { + this.mqCode = mqCode; + } + + /** **/ + public String getId() { + return this.id; + } + + /** **/ + public void setId(String id) { + this.id = id; + } + + public String getFileOriginPath() { + return fileOriginPath; + } + + public void setFileOriginPath(String fileOriginPath) { + this.fileOriginPath = fileOriginPath; + } + + public String getLawsId() { + return lawsId; + } + + public void setLawsId(String lawsId) { + this.lawsId = lawsId; + } + + public String getResId() { + return resId; + } + + public void setResId(String resId) { + this.resId = resId; + } + + public String getConvertType() { + return convertType; + } + + public void setConvertType(String convertType) { + this.convertType = convertType; + } + + public String getPdfPath() { + return pdfPath; + } + + public void setPdfPath(String pdfPath) { + this.pdfPath = pdfPath; + } + + public String getAddOrUp() { + return addOrUp; + } + + public void setAddOrUp(String addOrUp) { + this.addOrUp = addOrUp; + } + + public String getPdfId() { + return pdfId; + } + + public void setPdfId(String pdfId) { + this.pdfId = pdfId; + } + + public Date getModifyTime() { + return modifyTime; + } + + public void setModifyTime(Date modifyTime) { + this.modifyTime = modifyTime; + } + + public Date getCreationTime() { + return creationTime; + } + + public void setCreationTime(Date creationTime) { + this.creationTime = creationTime; + } + + public String getFileSuffix() { + return fileSuffix; + } + + public void setFileSuffix(String fileSuffix) { + this.fileSuffix = fileSuffix; + } + + public String getStandFileClassify() { + return standFileClassify; + } + + public void setStandFileClassify(String standFileClassify) { + this.standFileClassify = standFileClassify; + } + + public String getOriAttId() { + return oriAttId; + } + + public void setOriAttId(String oriAttId) { + this.oriAttId = oriAttId; + } + + public int getAgainNum() { + return againNum; + } + + public void setAgainNum(int againNum) { + this.againNum = againNum; + } + + public String getLawsFileClassify() { + return lawsFileClassify; + } + + public void setLawsFileClassify(String lawsFileClassify) { + this.lawsFileClassify = lawsFileClassify; + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/dao/OtConvertEODao.java b/adc-da-slrs/src/main/java/com/adc/da/mq/dao/OtConvertEODao.java new file mode 100644 index 00000000..cfbbe4e4 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/dao/OtConvertEODao.java @@ -0,0 +1,10 @@ +package com.adc.da.mq.dao; + +import com.adc.da.common.ConvertMqEO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface OtConvertEODao extends BaseMapper { + + int deleteByAttId(String value); + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/service/CreateMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/service/CreateMQService.java new file mode 100644 index 00000000..7a7e1795 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/service/CreateMQService.java @@ -0,0 +1,77 @@ +package com.adc.da.mq.service; + +import com.adc.da.common.ConvertMqEO; +import com.adc.da.mq.dao.OtConvertEODao; +import com.adc.da.util.utils.StringUtils; +import com.adc.da.util.utils.UUID; +import org.springframework.amqp.core.AmqpTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +@Component +public class CreateMQService { + @Autowired + private AmqpTemplate rabbitTemplate; + + @Autowired + private OtConvertEODao otConvertEODao; + /** + * @Author yangxuenan + * @Description 创建消息队列 + * Date 2018/8/24 13:59 + * @Param [convert, convertType] + * @return int + **/ + public void sendMQ(ConvertMqEO convert) throws Exception{ + String otId = UUID.randomUUID(20); + //向OT_CONVERT_EO表中添加/修改数据 + //判断用户是初次发送还是重新发送,初次将添加到数据库,重新发送将修改原数据信息 + convert.setMqState(0); + convert.setModifyTime(new Date()); + if("0".equals(convert.getAddOrUp()) && StringUtils.isEmpty(convert.getId())){ + convert.setId(otId); + convert.setMqCode(convert.getConvertType()); + convert.setCreationTime(new Date()); + convert.setValidFlag(0); + otConvertEODao.insert(convert); + } else { + otConvertEODao.updateById(convert); + } + + //将数据信息保存并发送给消息队列 + Map convertInfo = new HashMap(); + //标准/政策ID + convertInfo.put("lawsId", convert.getLawsId()); + //标准/政策关联的res表ID + convertInfo.put("resId", convert.getResId()); + //文档的ID + convertInfo.put("attId", convert.getAttId()); + //判断当前操作是新增还是修改 + convertInfo.put("addUpFlag", convert.getAddOrUp()); + //资源类型(标准,政策,企标) + convertInfo.put("convertType", convert.getConvertType()); + //文档路径 + convertInfo.put("path", convert.getFilePath()); + convertInfo.put("standFileClassify", convert.getStandFileClassify()); + convertInfo.put("lawsFileClassify", convert.getLawsFileClassify()); + if("0".equals(convert.getAddOrUp())){ + //otId在转换表中数据ID + convertInfo.put("otId", otId); + //在stand_file等资源与文件关联表中转换成功的pdf数据ID + convertInfo.put("standFilePdfId", UUID.randomUUID(20)); + convertInfo.put("againNum",0); + } else { + convertInfo.put("otId", convert.getId()); + convertInfo.put("standFilePdfId", convert.getPdfId()); + convertInfo.put("againNum",convert.getAgainNum()); + } + + //发送消息队列 + this.rabbitTemplate.convertAndSend("convert-exchange_SQ_GSAR", "convert-key_SQ_GSAR", convertInfo); + } + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/service/CreateStandMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/service/CreateStandMQService.java new file mode 100644 index 00000000..b7253717 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/service/CreateStandMQService.java @@ -0,0 +1,32 @@ +package com.adc.da.mq.service; + +import net.sf.json.JSONObject; +import org.springframework.amqp.core.AmqpTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +@Component +public class CreateStandMQService { + @Autowired + private AmqpTemplate rabbitTemplate; + + /** + * + * @param sarStandardsInfoEO 标准实体 + * @param addOrUpdate + * @throws Exception + */ + public void sendStandMQ(Object sarStandardsInfoEO, String addOrUpdate) throws Exception{ + JSONObject json = JSONObject.fromObject(sarStandardsInfoEO); + String sarStandardsInfoStr = json.toString(); + Map standMap = new HashMap(); + standMap.put("sarStandards", sarStandardsInfoStr); + standMap.put("addOrUpdate", addOrUpdate); + + //发送消息队列 + this.rabbitTemplate.convertAndSend("stand-exchange_SQ_GSAR", "stand-key_SQ_GSAR", standMap); + } +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/mq/service/SendStandMQService.java b/adc-da-slrs/src/main/java/com/adc/da/mq/service/SendStandMQService.java new file mode 100644 index 00000000..164faf75 --- /dev/null +++ b/adc-da-slrs/src/main/java/com/adc/da/mq/service/SendStandMQService.java @@ -0,0 +1,316 @@ +package com.adc.da.mq.service; + +import com.adc.da.slrs.otSvpps.entity.OtSvpps; +import com.adc.da.slrs.otSvpps.service.IOtSvppsService; +import com.adc.da.slrs.sarStandardsInfo.entity.SarStandardsInfo; +import com.adc.da.slrs.sarStandardsInfo.service.ISarStandardsInfoService; +import com.adc.da.slrs.sysInfo.service.SysInfoEOService; +import com.rabbitmq.client.Channel; +import net.sf.json.JSONObject; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.amqp.support.AmqpHeaders; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.Message; +import org.springframework.stereotype.Component; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +public class SendStandMQService { + + @Autowired + private ISarStandardsInfoService sarStandardsInfoService; + + @Autowired + private SysInfoEOService sysInfoEOService; + + + @Autowired + private IOtSvppsService otSvppsEOService; + + + private static final Logger logger = LoggerFactory.getLogger(SendStandMQService.class); + + @RabbitListener(bindings = @QueueBinding( + value = @Queue(value = "createStandMQ_SQ_GSAR", durable = "true"), + exchange = @Exchange(value = "stand-exchange_SQ_GSAR", ignoreDeclarationExceptions = "true"), + key = "stand-key_SQ_GSAR")) + public void createMQ(Map standMap, Message message, Channel channel) throws Exception{ + try{ + try{ + Thread.sleep(5000); + insertOrUpdateStandInfo(standMap); + }catch(InterruptedException e){ + logger.error(e.toString()); + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + logger.error("搜索中心标准消息队列进入添加数据方法前失败!"); + logger.error(e.getMessage(),e); + }finally { + Long tag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG); + channel.basicAck(tag,false); + logger.debug("消息确认成功!!!!!!!!!"); + } + + } + + public void insertOrUpdateStandInfo(Map standMap){ + String addOrUpdate = standMap.get("addOrUpdate").toString(); + String sarStandards = standMap.get("sarStandards").toString(); + JSONObject jsonobject = JSONObject.fromObject(sarStandards); + SarStandardsInfo infoEO = (SarStandardsInfo) JSONObject.toBean(jsonobject,SarStandardsInfo.class); + String attr = infoEO.getSarStandAttrEOStr(); + JSONObject jsonobject1 = JSONObject.fromObject(attr); + Map map = (Map)jsonobject1; + String GZZXX = String.valueOf(map.get("GZZXX")); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + // 往索引表中插入数据 + String getCodeName = ""; + Map saveMap = new HashMap<>(); + String baseSearchContent = ""; + // 开始存放数据 + saveMap.put("id",infoEO.getId()); + saveMap.put("BYYBJ", map.getOrDefault("BYYBJ", "")); + saveMap.put("BDTBH", map.getOrDefault("BDTBH", "")); + saveMap.put("country",infoEO.getCountry()); + + if (StringUtils.isNotEmpty(infoEO.getCountry())) { + String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getCountry()); + saveMap.put("countryShow",codeName); + } + saveMap.put("standSort",infoEO.getStandSort()); + saveMap.put("stand_sort",infoEO.getStandSort()); + if (StringUtils.isNotEmpty(infoEO.getStandSort())) { + String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getStandSort()); + saveMap.put("standSortShow",codeName); + getCodeName = codeName; + } + saveMap.put("standNumber",infoEO.getStandNumber()); + saveMap.put("stand_number",infoEO.getStandNumber()); + saveMap = dealNumberMsg(saveMap,infoEO,getCodeName); + saveMap.put("standYear",infoEO.getStandYear()); + saveMap.put("stand_year",infoEO.getStandYear()); + saveMap.put("nameshow",infoEO.getStandName()); + saveMap.put("stand_name",infoEO.getStandName()); + saveMap.put("standEnName",infoEO.getStandEnName()); + saveMap.put("stand_en_name",infoEO.getStandEnName()); + + if ("1".equals(infoEO.getIsRelateAccess())) { + saveMap.put("isRelateAccess","A" ); + }else{ + saveMap.put("isRelateAccess","B" ); + } + if (StringUtils.isNotEmpty(infoEO.getStandState())) { + String codeName = sysInfoEOService.getDicNamesByCodes(infoEO.getStandState()); + saveMap.put("standstateshow",codeName); + } + saveMap.put("issueTime",infoEO.getIssueTime()); + + String newDate = infoEO.getIssueTime(); + if (StringUtils.isNotBlank(infoEO.getIssueTime()) && StringUtils.isNotBlank(infoEO.getIssueTime().trim()) && infoEO.getIssueTime().trim().length()>10) { + newDate = infoEO.getIssueTime().trim().substring(0,10); + } + + saveMap.put("issue_time",newDate); + Date issue_time_data = null; + if (StringUtils.isNotBlank(infoEO.getIssueTime())) { + try { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + issue_time_data = format.parse(newDate+" 00:00:00"); + } catch (ParseException ignored) { + } + } + if (issue_time_data != null) { + saveMap.put("issue_time_data",issue_time_data.getTime()); + }else{ + saveMap.put("issue_time_data",0L); + } + saveMap.put("synopsis",infoEO.getSynopsis()); + saveMap.put("standType",infoEO.getStandType()); + // 自定义属性字段 + String sarStandAttrEOStr = infoEO.getSarStandAttrEOStr(); + Map attrInfoMap = JSONObject.fromObject(sarStandAttrEOStr); + if (attrInfoMap != null && !attrInfoMap.isEmpty()) { + attrInfoMap = sysInfoEOService.changeSelectInfo(attrInfoMap, "stand",baseSearchContent); + saveMap.putAll(attrInfoMap); + } + saveMap.put("baseSearchContent",baseSearchContent); + saveMap.put("type","stand"); + saveMap.put("validFlag","0"); + saveMap.put("content",infoEO.getFileIds()); + saveMap.put("CHJL",infoEO.getCHJL()); + + String SVPPSSting = ""; + if (attrInfoMap != null) { + if (attrInfoMap.containsKey("SVPPS")){ + String svpps = String.valueOf(attrInfoMap.get("SVPPS")); + List ids = new ArrayList<>(Arrays.asList(svpps.split(","))); + for (String id: ids){ + String num = ""; + try { + OtSvpps otSvppsEO = otSvppsEOService.getById(id); + if (null != otSvppsEO) { + if ("NA".equals(otSvppsEO.getTNum())) { + if ("NA".equals(otSvppsEO.getSNum())) { + num = otSvppsEO.getFNum(); + } else { + num = otSvppsEO.getSNum(); + } + } else { + num = otSvppsEO.getTNum(); + } + } + if ("".equals(SVPPSSting)){ + SVPPSSting = num; + }else { + SVPPSSting = SVPPSSting + "," + num; + } + } catch (Exception e) { + e.printStackTrace(); + } + } + saveMap.put("SVPPSName",SVPPSSting); + } + } + + + Date XCXSSRQ_data = null; + if (StringUtils.isNotBlank(String.valueOf(saveMap.get("XCXSSRQ")))) { + try { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (String.valueOf(saveMap.get("XCXSSRQ")).trim().length()>10) { + XCXSSRQ_data = format.parse(String.valueOf(saveMap.get("XCXSSRQ")).trim().substring(0,10) + " 00:00:00"); + saveMap.put("XCXSSRQ",String.valueOf(saveMap.get("XCXSSRQ")).trim().substring(0,10)); + }else{ + XCXSSRQ_data = format.parse(String.valueOf(saveMap.get("XCXSSRQ")).trim() + " 00:00:00"); + saveMap.put("XCXSSRQ",String.valueOf(saveMap.get("XCXSSRQ")).trim()); + } + } catch (ParseException ignored) { + } + } + if (XCXSSRQ_data != null) { + saveMap.put("XCXSSRQ_data",XCXSSRQ_data.getTime()); + }else{ + saveMap.put("XCXSSRQ_data",0L); + } + saveMap.put("XCXSSRQ",String.valueOf(saveMap.get("XCXSSRQ")+" ")); + + Date ZCCSSRQ_data = null; + if (StringUtils.isNotBlank(String.valueOf(saveMap.get("ZCCSSRQ")))) { + try { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (String.valueOf(saveMap.get("ZCCSSRQ")).trim().length()>10) { + ZCCSSRQ_data = format.parse(String.valueOf(saveMap.get("ZCCSSRQ")).trim().substring(0, 10) + " 00:00:00"); + saveMap.put("ZCCSSRQ",String.valueOf(saveMap.get("ZCCSSRQ")).trim().substring(0, 10)); + }else { + ZCCSSRQ_data = format.parse(String.valueOf(saveMap.get("ZCCSSRQ")).trim() + " 00:00:00"); + saveMap.put("ZCCSSRQ",String.valueOf(saveMap.get("ZCCSSRQ")).trim()); + } + } catch (ParseException ignored) { + } + } + if (ZCCSSRQ_data != null) { + saveMap.put("ZCCSSRQ_data",ZCCSSRQ_data.getTime()); + }else{ + saveMap.put("ZCCSSRQ_data",0L); + } + saveMap.put("ZCCSSRQ",String.valueOf(saveMap.get("ZCCSSRQ")+" ")); + + Date EOPSSRQ_data = null; + String ESSRQ= null; + if (StringUtils.isNotBlank(String.valueOf(saveMap.get("EOPSSRQ")))) { + try { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (String.valueOf(saveMap.get("EOPSSRQ")).trim().length()>10){ + ESSRQ = String.valueOf(saveMap.get("EOPSSRQ")).trim().substring(0,10); + }else { + ESSRQ = String.valueOf(saveMap.get("EOPSSRQ")).trim(); + } + EOPSSRQ_data = format.parse(ESSRQ + " 00:00:00"); + } catch (ParseException ignored) { + } + map.put("EOPSSRQ",ESSRQ); + } + if (EOPSSRQ_data != null) { + saveMap.put("EOPSSRQ_data",EOPSSRQ_data.getTime()); + }else{ + saveMap.put("EOPSSRQ_data",0L); + } + saveMap.put("EOPSSRQ",String.valueOf(saveMap.get("EOPSSRQ")+" ")); + + if (map.containsKey("DXBZ")){ + saveMap.put("DXBZ",map.get("DXBZ")); + }else{ + saveMap.put("DXBZ",""); + } + //当建立代替时,产生的没有文件的问题 + if (StringUtils.isBlank(String.valueOf(saveMap.get("content")))) { + String context = String.valueOf(saveMap.get("FBGBJBD")) + "," + + String.valueOf(saveMap.get("XXZLXX")) + "," + + String.valueOf(saveMap.get("ZQYJG")) + "," + + String.valueOf(saveMap.get("BPG")) + "," + + String.valueOf(saveMap.get("CA")) + "," + + String.valueOf(saveMap.get("SSG")) + "," + + String.valueOf(saveMap.get("ZBJBD")); + context = context.replace(",,", ","); + saveMap.put("content", context); + } + if (StringUtils.isNotBlank(String.valueOf(saveMap.get("FO"))) && !"null".equals(String.valueOf(saveMap.get("FO")))){ + saveMap.put("FO",String.valueOf(saveMap.get("FO"))+" "); + } + if("add".equals(addOrUpdate)){ + sarStandardsInfoService.insertIntoIndexForMap(saveMap); + } else { + sarStandardsInfoService.updateIntoIndexForMap(saveMap); + } + } + + public Map dealNumberMsg (Map saveMap,SarStandardsInfo infoEO,String getCodeName) { + if(StringUtils.isNotEmpty(infoEO.getStandYear())){ + String number = getCodeName + " " + infoEO.getStandNumber() + "-" + infoEO.getStandYear(); + saveMap.put("numbershow",number); + int index = infoEO.getStandNumber().indexOf("."); + int index1 = infoEO.getStandNumber().indexOf(":"); + String numberExpNull = ""; + if(index > -1){ + numberExpNull = (getCodeName + infoEO.getStandNumber() + "-" + number.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandNumber().substring(0,index) + "-" + infoEO.getStandNumber().substring(0,index)); + } else if (index1 > -1) { + numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + number.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandNumber().substring(0,index1) + "-" + infoEO.getStandNumber().substring(0,index1); + } else { + numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + number.replaceAll(" ",""); + } + saveMap.put("numberExpNull",numberExpNull); + } else { + String num = getCodeName + " " + infoEO.getStandNumber(); + saveMap.put("numbershow",num); + int index = infoEO.getStandNumber().indexOf("."); + String numberExpNull = ""; + if(index > -1){ + numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + num.replaceAll(" ","") + + "-" + getCodeName + infoEO.getStandNumber().substring(0,index) + "-" + infoEO.getStandNumber().substring(0,index); + } else { + numberExpNull = getCodeName + infoEO.getStandNumber() + "-" + num.replaceAll(" ",""); + } + saveMap.put("numberExpNull",numberExpNull); + } + return saveMap; + } + + +} diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/ISarStandardsInfoService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/ISarStandardsInfoService.java index b3d63672..973fb7cd 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/ISarStandardsInfoService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/ISarStandardsInfoService.java @@ -40,4 +40,8 @@ public interface ISarStandardsInfoService extends IService { List selectRecommendStand(SarStandardsInfoEOPage pagenew); List getStandAndItemsForAct (SarStandardsInfoEOPage page) throws Exception; + + void insertIntoIndexForMap(Map attrInfoMap); + + void updateIntoIndexForMap(Map attrInfoMap); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java index e9224936..dd9aec44 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandardsInfo/service/impl/SarStandardsInfoServiceImpl.java @@ -10,6 +10,7 @@ import com.adc.da.person.dao.PersonCollectEODao; import com.adc.da.person.dao.PersonShareEODao; import com.adc.da.person.entity.PersonMsgEO; import com.adc.da.person.service.IPersonCollectEOService; +import com.adc.da.search.service.StandLawsSearchService; import com.adc.da.slrs.sarLawsInfo.entity.SarLawsInfo; import com.adc.da.slrs.sarLawsInfo.page.SarLawsInfoEOPage; import com.adc.da.slrs.sarLawsInfo.page.SarLawsItemsEOPage; @@ -51,6 +52,13 @@ import com.alibaba.fastjson.serializer.SerializerFeature; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import net.sf.json.JSONObject; import org.apache.commons.lang3.StringUtils; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.util.PDFTextStripper; +import org.apache.pdfbox.util.PDFTextStripperByArea; +import org.apache.poi.hwpf.extractor.WordExtractor; +import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.xwpf.extractor.XWPFWordExtractor; +import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; @@ -61,6 +69,7 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.io.File; +import java.io.FileInputStream; import java.sql.Clob; import java.text.SimpleDateFormat; import java.util.*; @@ -151,6 +160,12 @@ public class SarStandardsInfoServiceImpl extends ServiceImpl attrInfoMap) { + Set keys = attrInfoMap.keySet(); + for (String key:keys) { + String value = String.valueOf(attrInfoMap.get(key)); + if (com.adc.da.util.utils.StringUtils.isNotBlank(value) && !"null".equals(value) && !"SVPPS".equals(key)){ + value = value.replace(" , ",","); + value = value.replace(","," , "); + attrInfoMap.put(key,value); + } + } + // 根据文件attid 读取文件内容 + if (org.apache.commons.lang.StringUtils.isNotEmpty(String.valueOf(attrInfoMap.get("content")))) { + String[] attidlist = String.valueOf(attrInfoMap.get("content")).split(" , "); + StringBuilder content = new StringBuilder(""); + for (int i = 0; i < attidlist.length; i++) { + if(org.apache.commons.lang.StringUtils.isNotEmpty(attidlist[i]) ){ + AttFileEO attFileEO = attFileEOService.getFileInfo(attidlist[i]); + String readFilePath = filePath + "/" + attFileEO.getFilePath() + attFileEO.getFileName(); + try { + // 判断文件是docx还是PDF + if (null != attFileEO.getFileSuffix() && (attFileEO.getFileSuffix().equals("docx") || attFileEO.getFileSuffix().equals("doc") || attFileEO.getFileSuffix().equals("ppt") || attFileEO.getFileSuffix().equals("pptx"))) { + if(attFileEO.getFileSuffix().equals("doc")){ + FileInputStream fis = new FileInputStream(readFilePath); + WordExtractor wordExtractor = new WordExtractor(fis); + String txt = wordExtractor.getText(); + content.append(txt); + }else { + OPCPackage opcPackage = XWPFDocument.openPackage(readFilePath); + XWPFWordExtractor extractor = new XWPFWordExtractor(opcPackage); + String txt = extractor.getText(); + content.append(txt); + } + } else { + PDDocument document = PDDocument.load(new File(readFilePath)); + document.getClass(); + if (!document.isEncrypted()) { + PDFTextStripperByArea stripper = new PDFTextStripperByArea(); + stripper.setSortByPosition(true); + PDFTextStripper tStripper = new PDFTextStripper(); + String pdfFileInText = tStripper.getText(document); + // String[] lines = pdfFileInText.split("\\r?\\n"); + content.append(pdfFileInText); + } + } + } catch (Exception e) { + logger.error("搜索中心新增数据读取文档内容时失败"); + logger.error(e.getMessage(),e); + } + /*catch (IOException | OpenXML4JException | XmlException e) { + logger.error(e.getMessage(),e); + }*/ + attrInfoMap.put("content",content.toString()); + } + } + } + else{ + attrInfoMap.put("content",""); + } + standLawsSearchService.addStandLawsSearchForMap(attrInfoMap); + } + + @Override + public void updateIntoIndexForMap(Map attrInfoMap) { + Set keys = attrInfoMap.keySet(); + for (String key:keys) { + String value = String.valueOf(attrInfoMap.get(key)); + if (com.adc.da.util.utils.StringUtils.isNotBlank(value) && !"null".equals(value) && !"SVPPS".equals(key) && !"content".equals(key)){ + value = value.replace(" , ",","); + value = value.replace(","," , "); + attrInfoMap.put(key,value); + } + } + // 根据文件attid 读取文件内容 + if (org.apache.commons.lang.StringUtils.isNotEmpty(String.valueOf(attrInfoMap.get("content")))) { + String[] attidlist = String.valueOf(attrInfoMap.get("content")).split(" , "); + StringBuilder content = new StringBuilder(""); + for (int i = 0; i < attidlist.length; i++) { + if(org.apache.commons.lang.StringUtils.isNotEmpty(attidlist[i]) && !"null".equals(attidlist[i])){ + AttFileEO attFileEO = attFileEOService.getFileInfo(attidlist[i]); + String readFilePath = filePath + "/" + attFileEO.getFilePath() + attFileEO.getFileName(); + try { + // 判断文件是docx还是PDF + if (attFileEO.getFileSuffix().equals("docx") || attFileEO.getFileSuffix().equals("doc")) { + if(attFileEO.getFileSuffix().equals("doc")){ + FileInputStream fis = new FileInputStream(readFilePath); + WordExtractor wordExtractor = new WordExtractor(fis); + String txt = wordExtractor.getText(); + content.append(txt); + }else { + OPCPackage opcPackage = XWPFDocument.openPackage(readFilePath); + XWPFWordExtractor extractor = new XWPFWordExtractor(opcPackage); + String txt = extractor.getText(); + content.append(txt); + } + } else if (attFileEO.getFileSuffix().equals("pdf")){ + PDDocument document = PDDocument.load(new File(readFilePath)); + document.getClass(); + if (!document.isEncrypted()) { + PDFTextStripperByArea stripper = new PDFTextStripperByArea(); + stripper.setSortByPosition(true); + PDFTextStripper tStripper = new PDFTextStripper(); + String pdfFileInText = tStripper.getText(document); + // String[] lines = pdfFileInText.split("\\r?\\n"); + content.append(pdfFileInText); + } + } + } catch (Exception e) { + logger.error("搜索中心修改数据读取文档内容时失败"); + logger.error(e.getMessage(),e); + } + attrInfoMap.put("content",content.toString()); + } + } + } + else{ + attrInfoMap.put("content",""); + } + standLawsSearchService.updateStandLawsSearchForMap(attrInfoMap); + } + public void getStandDetailsForAct (SarStandardsInfoEOPage page,String[] idArr,String standState,List standList) throws Exception{ page.setPageSize(100); page.setIdlist(idArr);