Procházet zdrojové kódy

1、引入es,mysql数据同步至es库接口。

guanzi před 3 roky
rodič
revize
f86f0e3cd4
18 změnil soubory, kde provedl 345 přidání a 23 odebrání
  1. 29 1
      saas-backen/src/main/java/com/pavis/app/saasbacken/config/ElasticSearchConfig.java
  2. 28 0
      saas-backen/src/main/java/com/pavis/app/saasbacken/config/IndexNameGenerator.java
  3. 2 0
      saas-backen/src/main/java/com/pavis/app/saasbacken/dao/PersonalInfoMapper.java
  4. 6 0
      saas-backen/src/main/java/com/pavis/app/saasbacken/entity/EnterpriseBasicInfo.java
  5. 2 0
      saas-backen/src/main/java/com/pavis/app/saasbacken/entity/PersonalInfo.java
  6. 7 7
      saas-backen/src/main/java/com/pavis/app/saasbacken/entity/ResourceLibrary.java
  7. 4 3
      saas-backen/src/main/java/com/pavis/app/saasbacken/entity/ResourceLibraryEntity.java
  8. 43 0
      saas-backen/src/main/java/com/pavis/app/saasbacken/form/BasicInfo.java
  9. 2 2
      saas-backen/src/main/java/com/pavis/app/saasbacken/form/TaxParam.java
  10. 7 0
      saas-backen/src/main/java/com/pavis/app/saasbacken/service/CategoryService.java
  11. 2 1
      saas-backen/src/main/java/com/pavis/app/saasbacken/service/EnterpriseBasicInfoService.java
  12. 9 1
      saas-backen/src/main/java/com/pavis/app/saasbacken/service/EsService.java
  13. 7 0
      saas-backen/src/main/java/com/pavis/app/saasbacken/service/PersonalInfoService.java
  14. 23 0
      saas-backen/src/main/java/com/pavis/app/saasbacken/service/impl/base/CategoryServiceImpl.java
  15. 31 4
      saas-backen/src/main/java/com/pavis/app/saasbacken/service/impl/base/EnterpriseBasicInfoServiceImpl.java
  16. 43 0
      saas-backen/src/main/java/com/pavis/app/saasbacken/service/impl/base/PersonalInfoServiceImpl.java
  17. 97 3
      saas-backen/src/main/java/com/pavis/app/saasbacken/service/impl/other/EsServiceImpl.java
  18. 3 1
      saas-backen/src/main/resources/application-dev.yml

+ 29 - 1
saas-backen/src/main/java/com/pavis/app/saasbacken/config/ElasticSearchConfig.java

@@ -1,6 +1,7 @@
 package com.pavis.app.saasbacken.config;
 
 import org.apache.http.HttpHost;
+import org.apache.http.conn.ConnectionKeepAliveStrategy;
 import org.elasticsearch.client.RestClient;
 import org.elasticsearch.client.RestHighLevelClient;
 import org.springframework.context.annotation.Bean;
@@ -20,9 +21,36 @@ public class ElasticSearchConfig {
     public RestHighLevelClient restHighLevelClient() {
         RestHighLevelClient client = new RestHighLevelClient(
                 RestClient.builder(
-                        new HttpHost("127.0.0.1", 9200, "http")
+                        // new HttpHost("127.0.0.1", 9200, "http")
+                        new HttpHost("192.168.1.127", 9200, "http")
                 )
+                        .setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder
+                                .setKeepAliveStrategy(getConnectionKeepAliveStrategy())
+                                .setMaxConnPerRoute(10))
+                        .setRequestConfigCallback(requestConfigBuilder ->
+                                requestConfigBuilder
+                                        .setConnectTimeout(1 * 1000)
+                                        .setConnectionRequestTimeout(2 * 1000)
+                                        .setSocketTimeout(12 * 1000))
         );
         return client;
+
+    }
+    private ConnectionKeepAliveStrategy getConnectionKeepAliveStrategy() {
+        return (response, context) -> {
+            //HeaderElementIterator it = new BasicHeaderElementIterator
+            //        (response.headerIterator(HTTP.CONN_KEEP_ALIVE));
+            //while (it.hasNext()) {
+            //    HeaderElement he = it.nextElement();
+            //    String param = he.getName();
+            //    String value = he.getValue();
+            //    if (value != null && param.equalsIgnoreCase
+            //            ("timeout")) {
+            //        return Long.parseLong(value) * 1000;
+            //    }
+            //}
+            //return 60 * 1000;//如果没有约定,则默认定义时长为60s
+            return 2 * 60 * 1000;
+        };
     }
 }

+ 28 - 0
saas-backen/src/main/java/com/pavis/app/saasbacken/config/IndexNameGenerator.java

@@ -0,0 +1,28 @@
+package com.pavis.app.saasbacken.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * @program: push-saas
+ * @description: IndexNameGenerator
+ * @author: Guanzi
+ * @created: 2021/11/24 13:55
+ */
+@Component("indexNameGenerator")
+@Slf4j
+public class IndexNameGenerator {
+
+    @Value("${elasticsearch.indexname}")
+    private String indexName;
+
+    public String commonIndex() {
+        // 根据日期生成index
+        // String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+        // return "collectlog_" + date;
+        // 返回index
+        log.info("indexName:{}",indexName);
+        return indexName;
+    }
+}

+ 2 - 0
saas-backen/src/main/java/com/pavis/app/saasbacken/dao/PersonalInfoMapper.java

@@ -2,6 +2,7 @@ package com.pavis.app.saasbacken.dao;
 
 import com.pavis.app.saasbacken.entity.PersonalInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Component;
 
 /**
  * <p>
@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author guan
  * @since 2021-10-29
  */
+@Component
 public interface PersonalInfoMapper extends BaseMapper<PersonalInfo> {
 
 }

+ 6 - 0
saas-backen/src/main/java/com/pavis/app/saasbacken/entity/EnterpriseBasicInfo.java

@@ -36,6 +36,9 @@ public class EnterpriseBasicInfo extends Model<EnterpriseBasicInfo> {
     @ApiModelProperty(value = "企业名称")
     private String name;
 
+    @ApiModelProperty(value = "联系人")
+    private String contacts;
+
     @ApiModelProperty(value = "法定代表人")
     private String legalRepresentative;
 
@@ -126,6 +129,9 @@ public class EnterpriseBasicInfo extends Model<EnterpriseBasicInfo> {
     @ApiModelProperty(value = "研发人员数")
     private String researchDevCount;
 
+    @ApiModelProperty(value = "企业联系人信息关联id")
+    private String contactsId;
+
     @ApiModelProperty(value = "企业负责人/法人信息关联id")
     private String chargeDirectorId;
 

+ 2 - 0
saas-backen/src/main/java/com/pavis/app/saasbacken/entity/PersonalInfo.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -24,6 +25,7 @@ import java.util.Date;
 @Accessors(chain = true)
 @TableName("personal_info")
 @ApiModel(value="PersonalInfo对象", description="")
+@Builder
 public class PersonalInfo extends Model<PersonalInfo> {
 
     private static final long serialVersionUID = 1L;

+ 7 - 7
saas-backen/src/main/java/com/pavis/app/saasbacken/entity/ResourceLibrary.java

@@ -44,19 +44,19 @@ public class ResourceLibrary implements Serializable {
     // 研发、飞地等类型,是否是国高 【逗号分隔】。
     private String othertype;
     // 国高认定年份。
-    private String highIdentifiedYear;
+    private Integer highIdentifiedYear;
     // 省级重点企业研究院认定年份。
-    private String keyProvincialIdentifiedYear;
+    private Integer keyProvincialIdentifiedYear;
     // 省级企业研究院认定年份。
-    private String provincialIdentifiedYear;
+    private Integer provincialIdentifiedYear;
     // 浙江省高新技术研究开发中心认定年份。
-    private String highTechIdentifiedYear;
+    private Integer highTechIdentifiedYear;
     // 省科小认定年份。
-    private String provincialTechSmallIdentifiedYear;
+    private Integer provincialTechSmallIdentifiedYear;
     // 雏鹰计划认定年份。
-    private String youngEaglesIdentifiedYear;
+    private Integer youngEaglesIdentifiedYear;
     // 市级研发中心认定年份。
-    private String municipalResearchCenterIdentifiedYear;
+    private Integer municipalResearchCenterIdentifiedYear;
 
 
     // 飞地研发中心专职人员数

+ 4 - 3
saas-backen/src/main/java/com/pavis/app/saasbacken/entity/ResourceLibraryEntity.java

@@ -24,8 +24,9 @@ import java.util.List;
 @AllArgsConstructor
 @Builder
 @Data
-// @Document(indexName = "saas_test")
-@Document(indexName = "push-test")
+// @Document(indexName = "push-test")
+// 动态获取当前节点所用的索引名称。
+@Document(indexName = "#{@indexNameGenerator.commonIndex()}")
 public class ResourceLibraryEntity implements Serializable {
 
     @TableId(type = IdType.ID_WORKER_STR)
@@ -43,7 +44,7 @@ public class ResourceLibraryEntity implements Serializable {
     private String uniqueId;
     // 各资源库类型。6 企业库 等等。
     @Field(type = FieldType.Keyword)
-    private String flag;
+    private String resType;
     // 成立日期。
     @Field(type = FieldType.Date)
     private Date setupDate;

+ 43 - 0
saas-backen/src/main/java/com/pavis/app/saasbacken/form/BasicInfo.java

@@ -0,0 +1,43 @@
+package com.pavis.app.saasbacken.form;
+
+import com.pavis.app.saasbacken.entity.EnterpriseBasicInfo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+
+/**
+ * @program: push-saas
+ * @description: BasicInfo
+ * @author: Guanzi
+ * @created: 2021/11/24 15:50
+ */
+@Builder
+public class BasicInfo extends EnterpriseBasicInfo {
+
+    @ApiModelProperty(value = "主键自增id")
+    private String id;
+
+    @ApiModelProperty(value = "企业联系人姓名")
+    private String contacts;
+    @ApiModelProperty(value = "企业联系人联系方式")
+    private String contactsWay;
+
+    @ApiModelProperty(value = "企业负责人/法定代表人姓名")
+    private String chargeDirectorName;
+    @ApiModelProperty(value = "企业负责人/法定代表人联系方式")
+    private String chargeDirectorWay;
+
+    @ApiModelProperty(value = "研发负责人姓名")
+    private String researchDevName;
+    @ApiModelProperty(value = "研发负责人联系方式")
+    private String researchDevWay;
+
+    @ApiModelProperty(value = "财务负责人姓名")
+    private String financialName;
+    @ApiModelProperty(value = "财务负责人联系方式")
+    private String financialWay;
+
+    @ApiModelProperty(value = "科技联络人姓名")
+    private String technicalName;
+    @ApiModelProperty(value = "科技联络人联系方式")
+    private String technicalWay;
+}

+ 2 - 2
saas-backen/src/main/java/com/pavis/app/saasbacken/form/TaxParam.java

@@ -18,8 +18,8 @@ import org.springframework.data.elasticsearch.annotations.FieldType;
 @Data
 public class TaxParam {
 
-    @Field(type = FieldType.Keyword)
-    private String year;
+    @Field(type = FieldType.Integer)
+    private Integer year;
     // 区域,逗号分词。
     @Field(type = FieldType.Integer)
     private Integer val;

+ 7 - 0
saas-backen/src/main/java/com/pavis/app/saasbacken/service/CategoryService.java

@@ -13,4 +13,11 @@ import com.pavis.app.saasbacken.entity.Category;
  */
 public interface CategoryService extends IService<Category> {
 
+    /**
+     * 所属行业转换:电子信息-->I1 OR I1-->电子信息
+     * @param industryName
+     * @param flag true:电子信息-->I1;false:I1-->电子信息
+     * @return
+     */
+    String dealIndustry(String industryParam,Boolean flag);
 }

+ 2 - 1
saas-backen/src/main/java/com/pavis/app/saasbacken/service/EnterpriseBasicInfoService.java

@@ -4,6 +4,7 @@ import com.pavis.app.saasbacken.entity.EnterpriseBasicInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -21,5 +22,5 @@ public interface EnterpriseBasicInfoService extends IService<EnterpriseBasicInfo
      * @param basicInfo
      * @return
      */
-    List<EnterpriseBasicInfo> orgBasicAdd(@RequestBody List<Object> basicInfo);
+    List<EnterpriseBasicInfo> orgBasicAdd(@RequestBody List<Object> basicInfo) throws IOException;
 }

+ 9 - 1
saas-backen/src/main/java/com/pavis/app/saasbacken/service/EsService.java

@@ -1,6 +1,7 @@
 package com.pavis.app.saasbacken.service;
 
 import com.pavis.app.saasbacken.entity.EnterpriseBasicInfo;
+import com.pavis.app.saasbacken.entity.ResourceLibrary;
 import org.elasticsearch.action.search.SearchResponse;
 
 import java.io.IOException;
@@ -15,5 +16,12 @@ public interface EsService {
      * @param name
      * @return
      */
-    List<EnterpriseBasicInfo> selEsByName(String name);
+    List<EnterpriseBasicInfo> selEsByName(String name) throws IOException;
+
+    /**
+     * mysql数据同步至es。
+     * @return
+     */
+    List mysqlToEs(List<ResourceLibrary> resourceLibraryList) throws IOException;
+
 }

+ 7 - 0
saas-backen/src/main/java/com/pavis/app/saasbacken/service/PersonalInfoService.java

@@ -13,4 +13,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface PersonalInfoService extends IService<PersonalInfo> {
 
+    /**
+     * 根据姓名和联系方式,确定人员id。
+     * @param name
+     * @param contactsWay
+     * @return
+     */
+    String dealPersonal(String name,String contactsWay,String orgId);
 }

+ 23 - 0
saas-backen/src/main/java/com/pavis/app/saasbacken/service/impl/base/CategoryServiceImpl.java

@@ -1,13 +1,18 @@
 package com.pavis.app.saasbacken.service.impl.base;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pavis.app.saasbacken.dao.CategoryMapper;
 import com.pavis.app.saasbacken.entity.Category;
 import com.pavis.app.saasbacken.service.CategoryService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * <p>
  *  税务信息
@@ -21,5 +26,23 @@ import org.springframework.transaction.annotation.Transactional;
 @Transactional(rollbackFor = Exception.class)
 public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements CategoryService {
 
+    @Autowired
+    private CategoryMapper categoryMapper;
 
+    @Override
+    public String dealIndustry(String industryParam, Boolean flag) {
+        QueryWrapper<Category> categoryQueryWrapper = new QueryWrapper<>();
+        List<Category> categories = new ArrayList<>();
+        if (true == flag){
+            // true:电子信息-->I1;
+            categoryQueryWrapper.lambda().eq(Category::getName,industryParam);
+            categories = categoryMapper.selectList(categoryQueryWrapper);
+            return categories.size() > 0 ? categories.get(0).getCatCode() : industryParam;
+        }else {
+            // false:I1-->电子信息
+            categoryQueryWrapper.lambda().eq(Category::getCode,industryParam);
+            categories = categoryMapper.selectList(categoryQueryWrapper);
+            return categories.size() > 0 ? categories.get(0).getName() : industryParam;
+        }
+    }
 }

+ 31 - 4
saas-backen/src/main/java/com/pavis/app/saasbacken/service/impl/base/EnterpriseBasicInfoServiceImpl.java

@@ -4,12 +4,16 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pavis.app.saasbacken.dao.EnterpriseBasicInfoMapper;
 import com.pavis.app.saasbacken.entity.EnterpriseBasicInfo;
+import com.pavis.app.saasbacken.form.BasicInfo;
+import com.pavis.app.saasbacken.service.CategoryService;
 import com.pavis.app.saasbacken.service.EnterpriseBasicInfoService;
 import com.pavis.app.saasbacken.service.EsService;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -27,19 +31,42 @@ public class EnterpriseBasicInfoServiceImpl extends ServiceImpl<EnterpriseBasicI
     @Resource
     private EsService esService;
 
+    @Autowired
+    private CategoryService categoryService;
+
     @Override
-    public List<EnterpriseBasicInfo> orgBasicAdd(List<Object> basicInfo) {
-        List<EnterpriseBasicInfo> basicInfos = JSONObject.parseArray(JSONObject.toJSONString(basicInfo), EnterpriseBasicInfo.class);
+    public List<EnterpriseBasicInfo> orgBasicAdd(List<Object> basicInfo) throws IOException {
+        List<BasicInfo> basicInfos = JSONObject.parseArray(JSONObject.toJSONString(basicInfo), BasicInfo.class);
         // 解析数据。
         List<EnterpriseBasicInfo> addedBasicInfos = new ArrayList<>();
         EnterpriseBasicInfo addBasicInfo;
         for (EnterpriseBasicInfo info : basicInfos) {
             addBasicInfo = new EnterpriseBasicInfo();
             BeanUtils.copyProperties(info,addBasicInfo);
-            // 行业领域也由节点管理员进行配置,。
+            // 所属行业需要单独处理,做一下转换后进行存储。
+            addBasicInfo.setIndustry(categoryService.dealIndustry(info.getIndustry(),true));
+            // 企业类型
+            addBasicInfo.setEnterpriseType("");
+            //  机构类型
+            addBasicInfo.setResType("6");
+            // 是否规上
+            addBasicInfo.setIsGauge("");
+            // 资质信息
+            addBasicInfo.setQualifyInfo("");
+            // todo 企业负责人/法人信息关联id,需要将联系人信息新增至人员信息表。同时应该配置至企业与人员信息关联关系表。
+            addBasicInfo.setChargeDirectorId("");
+            // 企业联系人
+            addBasicInfo.setContactsId("");
+            // 研发负责人信息关联id
+            addBasicInfo.setResearchDevDirectorId("");
+            // 财务负责人信息关联id
+            addBasicInfo.setFinancialDirectorId("");
+            // 科技联络人信息关联id
+            addBasicInfo.setTechnicalDirectorId("");
+
+            // 行业领域也由节点管理员进行配置。
             addedBasicInfos.add(addBasicInfo);
         }
-
         return esService.selEsByName(addedBasicInfos.get(0).getName());
     }
 }

+ 43 - 0
saas-backen/src/main/java/com/pavis/app/saasbacken/service/impl/base/PersonalInfoServiceImpl.java

@@ -1,11 +1,17 @@
 package com.pavis.app.saasbacken.service.impl.base;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.pavis.app.saasbacken.entity.PersonalInfo;
 import com.pavis.app.saasbacken.dao.PersonalInfoMapper;
 import com.pavis.app.saasbacken.service.PersonalInfoService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * <p>
  *  人员基本信息库
@@ -15,6 +21,43 @@ import org.springframework.stereotype.Service;
  * @since 2021-10-29
  */
 @Service
+@Slf4j
 public class PersonalInfoServiceImpl extends ServiceImpl<PersonalInfoMapper, PersonalInfo> implements PersonalInfoService {
 
+    @Autowired
+    private PersonalInfoMapper personalInfoMapper;
+
+    @Override
+    public String dealPersonal(String name, String contactsWay,String orgId) {
+        List<PersonalInfo> personalInfos = new ArrayList<>();
+        if (null != orgId){
+            // 企业基本信息不存在。
+            personalInfos = personalInfoMapper.selectList(new QueryWrapper<PersonalInfo>()
+                    .lambda().eq(PersonalInfo::getName,name).eq(PersonalInfo::getContact,contactsWay));
+        }else {
+            // 企业基本信息存在。
+            personalInfos = personalInfoMapper.selectList(new QueryWrapper<PersonalInfo>()
+                    .lambda().eq(PersonalInfo::getName,name).eq(PersonalInfo::getContact,contactsWay).eq(PersonalInfo::getEnterpriseId,orgId));
+        }
+        if (personalInfos.size() > 0){
+            // 已存在人员信息,直接返回id
+            return personalInfos.get(0).getId();
+        }else {
+            // 人员信息不存在,新增人员信息后,返回id。
+            PersonalInfo personalInfo = initPersonalInfo(name, contactsWay);
+            int insert = personalInfoMapper.insert(personalInfo);
+            log.info("insert res:{},personalId:{}",insert,personalInfo.getId());
+            // 新建企业信息与人员信息的关联关系。
+
+            return personalInfo.getId();
+        }
+    }
+
+    public PersonalInfo initPersonalInfo(String name,String contactsWay){
+        PersonalInfo personalInfo = PersonalInfo.builder()
+                .name(name)
+                .contact(contactsWay)
+                .build();
+        return personalInfo;
+    }
 }

+ 97 - 3
saas-backen/src/main/java/com/pavis/app/saasbacken/service/impl/other/EsServiceImpl.java

@@ -1,29 +1,42 @@
 package com.pavis.app.saasbacken.service.impl.other;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.pavis.app.saasbacken.dao.ResourceLibraryEntityMapper;
+import com.pavis.app.saasbacken.dao.ResourceLibraryMapper;
 import com.pavis.app.saasbacken.entity.EnterpriseBasicInfo;
+import com.pavis.app.saasbacken.entity.ResourceLibrary;
 import com.pavis.app.saasbacken.entity.ResourceLibraryEntity;
+import com.pavis.app.saasbacken.form.TaxParam;
 import com.pavis.app.saasbacken.service.EsService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.lucene.search.join.ScoreMode;
+import org.elasticsearch.action.bulk.BulkRequest;
+import org.elasticsearch.action.bulk.BulkResponse;
+import org.elasticsearch.action.index.IndexRequest;
 import org.elasticsearch.action.search.SearchRequest;
 import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.client.RequestOptions;
 import org.elasticsearch.client.RestHighLevelClient;
 import org.elasticsearch.common.unit.TimeValue;
+import org.elasticsearch.common.xcontent.XContentType;
 import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.search.builder.SearchSourceBuilder;
 import org.elasticsearch.search.sort.SortOrder;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @program:
@@ -35,8 +48,8 @@ import java.util.List;
 @Service
 public class EsServiceImpl implements EsService {
 
-    @Autowired
-    private RestHighLevelClient restHighLevelClient;
+    @Value("${elasticsearch.indexname}")
+    private String indexName;
 
     @Autowired
     @Qualifier("restHighLevelClient")
@@ -45,6 +58,9 @@ public class EsServiceImpl implements EsService {
     @Autowired
     private ResourceLibraryEntityMapper resourceLibraryEntityMapper;
 
+    @Autowired
+    private ResourceLibraryMapper resourceLibraryMapper;
+
     @Override
     public SearchResponse findByAannualRevenue() throws IOException {
 
@@ -108,7 +124,7 @@ public class EsServiceImpl implements EsService {
     }
 
     @Override
-    public List<EnterpriseBasicInfo> selEsByName(String name) {
+    public List<EnterpriseBasicInfo> selEsByName(String name) throws IOException {
         List<ResourceLibraryEntity> byNames = resourceLibraryEntityMapper.findByName(name);
         EnterpriseBasicInfo enterpriseBasicInfo;
         List<EnterpriseBasicInfo> enterpriseBasicInfos = new ArrayList<>();
@@ -118,6 +134,84 @@ public class EsServiceImpl implements EsService {
             BeanUtils.copyProperties(byName,enterpriseBasicInfo);
             enterpriseBasicInfos.add(enterpriseBasicInfo);
         }
+
+        // 检索mysql数据,并同步至es库。
+        // QueryWrapper<ResourceLibrary> queryWrapper = new QueryWrapper<>();
+        // queryWrapper.lambda()
+        //         .isNotNull(ResourceLibrary::getId);
+        // List<ResourceLibrary> resourceLibraryList = resourceLibraryMapper.selectList(queryWrapper);
+        // System.err.println("mysql reslib:" + JSON.toJSONString(resourceLibraryList));
+        // mysqlToEs(resourceLibraryList);
         return enterpriseBasicInfos;
     }
+
+    @Override
+    public List mysqlToEs(List<ResourceLibrary> resourceLibraryList) throws IOException {
+        log.info("当前索引名称:{}",indexName);
+
+        // 批量导入es库。
+        BulkRequest bulkRequest = new BulkRequest();
+        bulkRequest.timeout("10000s");
+
+        // 批处理请求。
+        for (int i = 0; i < resourceLibraryList.size(); i++) {
+            ResourceLibraryEntity resourceLibraryEntity = new ResourceLibraryEntity();
+            BeanUtils.copyProperties(resourceLibraryList.get(i),resourceLibraryEntity);
+            resourceLibraryEntity.setAnnualRevenue(JSONArray.parseArray
+                    (resourceLibraryList.get(i).getAnnualRevenue(), TaxParam.class));
+            resourceLibraryEntity.setRdDeductible(JSONArray.parseArray
+                    (resourceLibraryList.get(i).getRdDeductible(),TaxParam.class));
+            System.err.println("to es entity:" + JSON.toJSONString(resourceLibraryEntity));
+            bulkRequest.add(
+                    // new IndexRequest(indexName)
+                    new IndexRequest(indexName)
+                            // .source(JSON.toJSONString(resourceLibraryList.get(i)), XContentType.JSON)
+                            .source(JSON.toJSONString(resourceLibraryEntity), XContentType.JSON)
+            );
+        }
+        BulkResponse bulkResp = client.bulk(bulkRequest, RequestOptions.DEFAULT);
+        System.err.println(bulkResp.hasFailures()); // 是否失败,返回false 代表成功。
+        Map<String,Object> resMap = new HashMap<>();
+        if (false == bulkResp.hasFailures()){
+            resMap.put("mes","save to es succ...");
+        }else {
+            resMap.put("mes","save to es failed...");
+        }
+        return null;
+    }
+
+    public void searchByName() throws IOException {
+        String key = "name";
+        String val = "苏州";
+        log.info("key:{},val:{}", key, val);
+        SearchRequest searchRequest = new SearchRequest(indexName);
+        // SearchRequest searchRequest = new SearchRequest("es_dome");
+        // 构建搜索条件
+        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
+
+        // 查询条件,用QueryBuilders实现
+        // QueryBuilders.termQuery 精确查找
+        // TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(key, val);
+
+        // QueryBuilders.matchAllQuery() 匹配所有。
+        // MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
+
+        // 根据关键词查询
+        QueryBuilder queryBuilder = QueryBuilders.queryStringQuery(val);
+
+
+        Integer page = 1;
+        // Integer rows = 3568;
+        Integer rows = 3;
+        searchSourceBuilder.from((page - 1) * rows);
+        searchSourceBuilder.size(rows);
+
+        searchSourceBuilder.query(queryBuilder);
+        searchSourceBuilder.timeout(new TimeValue(600, TimeUnit.SECONDS));
+
+        searchRequest.source(searchSourceBuilder);
+
+        SearchResponse searchResp = client.search(searchRequest, RequestOptions.DEFAULT);
+        System.out.println("search total:" + searchResp.getHits().getTotalHits().value);
+    }
 }

+ 3 - 1
saas-backen/src/main/resources/application-dev.yml

@@ -24,8 +24,10 @@ spring:
     expires: 604800
 # es配置
 elasticsearch:
-  hostname: 127.0.0.1
+#  hostname: 127.0.0.1
+  hostname: 192.168.1.127
   port: 9200
+  indexname: push-test
 logging:
   level:
     org.springframework.cloud: debug