Browse Source

IU-2021.3.3 <qiao@DESKTOP-HA9P059 Merge branch 'master'

xiaoqiao 1 year ago
parent
commit
e54b4f04aa

File diff suppressed because it is too large
+ 673 - 527
lib/华北油田Ai检索.PDM


File diff suppressed because it is too large
+ 737 - 533
lib/华北油田Ai检索.pdb


+ 10 - 0
pom.xml

@@ -41,6 +41,11 @@
             <artifactId>jackson-datatype-jsr310</artifactId>
             <version>2.13.3</version>
         </dependency>
+        <dependency>
+            <groupId>jakarta.json</groupId>
+            <artifactId>jakarta.json-api</artifactId>
+            <version>2.0.1</version>
+        </dependency>
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
@@ -161,6 +166,11 @@
             <artifactId>aspectjrt</artifactId>
             <version>${aspectj.version}</version>
         </dependency>
+        <dependency>
+            <groupId>co.elastic.clients</groupId>
+            <artifactId>elasticsearch-java</artifactId>
+            <version>8.11.1</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 0 - 3
src/main/java/com/bowintek/practice/config/CorsConfig.java

@@ -14,7 +14,6 @@ public class CorsConfig implements WebMvcConfigurer {
     @Autowired
     private PageNoCacheInterceptor pageNoCacheInterceptor;
 
-
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
         registry.addInterceptor(pageNoCacheInterceptor)
@@ -25,7 +24,6 @@ public class CorsConfig implements WebMvcConfigurer {
 
     }
 
-
     @Override
     public void addCorsMappings(CorsRegistry registry) {
 
@@ -35,5 +33,4 @@ public class CorsConfig implements WebMvcConfigurer {
                 .allowedMethods("GET", "POST")
                 .maxAge(3600);
     }
-
 }

+ 38 - 0
src/main/java/com/bowintek/practice/config/ElasticsearchConfig.java

@@ -0,0 +1,38 @@
+package com.bowintek.practice.config;
+
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
+import co.elastic.clients.json.jackson.JacksonJsonpMapper;
+import co.elastic.clients.transport.ElasticsearchTransport;
+import co.elastic.clients.transport.rest_client.RestClientTransport;
+import co.elastic.clients.util.ContentType;
+import org.apache.http.HttpHeaders;
+import org.apache.http.HttpHost;
+import org.apache.http.HttpResponseInterceptor;
+import org.apache.http.message.BasicHeader;
+import org.elasticsearch.client.RestClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Configuration
+public class ElasticsearchConfig {
+
+    @Resource
+    EsConfig config;
+
+    @Bean
+    public ElasticsearchClient esClient() {
+        RestClient restClient = RestClient.builder(new HttpHost(config.getHosts(),config.getPort()))
+                .setHttpClientConfigCallback(httpClientBuilder
+                        ->httpClientBuilder.setDefaultHeaders(
+                                List.of(new BasicHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString())))
+                        .addInterceptorLast((HttpResponseInterceptor) (response, context)
+                                -> response.addHeader("X-Elastic-Product", "Elasticsearch"))).build();
+        ElasticsearchTransport transport = new RestClientTransport(
+                restClient, new JacksonJsonpMapper());
+        ElasticsearchClient client = new ElasticsearchClient(transport);
+        return client;
+    }
+}

+ 23 - 0
src/main/java/com/bowintek/practice/config/EsConfig.java

@@ -0,0 +1,23 @@
+package com.bowintek.practice.config;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@ConfigurationProperties(prefix = "elasticsearch", ignoreInvalidFields = true)
+@Getter
+@Setter
+@Component
+public class EsConfig {
+
+    private String hosts;
+    private int port;
+    private String schema;
+    private int connectTimeOut;
+    private int socketTimeOut;
+    private int connectionRequestTimeOut;
+    private int maxConnectNum;
+    private int maxConnectPerRoute;
+    private String preStr;
+}

+ 4 - 0
src/main/java/com/bowintek/practice/controller/SubjectController.java

@@ -1,5 +1,6 @@
 package com.bowintek.practice.controller;
 
+import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import com.alibaba.fastjson.JSONObject;
 import com.bowintek.practice.filter.exception.BaseErrorEnum;
 import com.bowintek.practice.filter.exception.BaseResponse;
@@ -41,6 +42,9 @@ public class SubjectController {
     @Autowired
     private StringUtils stringUtils;
 
+    @Autowired
+    private ElasticsearchClient esClient;
+
     @ResponseBody
     @GetMapping("/getList")
     public BaseResponse<PageInfo<SubjectVo>> getList(@RequestParam("page") int page, @RequestParam("rows") int rows,

+ 26 - 12
src/main/java/com/bowintek/practice/services/impl/SubjectServiceImpl.java

@@ -64,8 +64,8 @@ public class SubjectServiceImpl implements SubjectService {
 
         if (model.getIsReferences() == 0) {
             model.setExecSql(model.getTabCode());
-        }else{
-            model.setExecSql(model.getExecSql().replaceAll("\\n",""));
+        } else {
+            model.setExecSql(model.getExecSql().replaceAll("\\n", ""));
         }
         List<SrTag> tagList = tagMapper.selectByExample(null);
 
@@ -88,7 +88,7 @@ public class SubjectServiceImpl implements SubjectService {
             result = subjectMapper.updateByPrimaryKey(model);
         }
         //新加标签
-        Arrays.stream(model.getTagList()).forEach(tag -> {
+        Arrays.stream(model.getTagList()).filter(tag->!StringUtils.IsNullEmpty(tag)).forEach(tag -> {
             SrTag dbTag = tagList.stream().filter(f -> f.getTagName().equals(tag.trim())).findFirst().orElse(null);
             if (dbTag == null) {
                 dbTag = new SrTag();
@@ -108,15 +108,18 @@ public class SubjectServiceImpl implements SubjectService {
             SrSubjectfieldExample.Criteria criteria = example.or();
             criteria.andSubIdEqualTo(model.getSubId());
             List<SrSubjectfield> dbList = subjectfieldMapper.selectByExample(example);
-            List<String> ids = fieldList.stream().map(x -> x.getFieldId()).collect(Collectors.toList());
 
-            //删除字段前先删除关联标签
-            SrSubjectfieldtagExample ftExp = new SrSubjectfieldtagExample();
-            ftExp.or().andFieldIdIn(dbList.stream().map(x -> x.getFieldId()).collect(Collectors.toList()));
-            subjectfieldtagMapper.deleteByExample(ftExp);
+            if (dbList.size() > 0) {
+                List<String> ids = fieldList.stream().map(x -> x.getFieldId()).collect(Collectors.toList());
 
-            criteria.andFieldIdNotIn(ids);
-            subjectfieldMapper.deleteByExample(example);
+                //删除字段前先删除关联标签
+                SrSubjectfieldtagExample ftExp = new SrSubjectfieldtagExample();
+                ftExp.or().andFieldIdIn(dbList.stream().map(x -> x.getFieldId()).collect(Collectors.toList()));
+                subjectfieldtagMapper.deleteByExample(ftExp);
+
+                criteria.andFieldIdNotIn(ids);
+                subjectfieldMapper.deleteByExample(example);
+            }
 
             fieldList.stream().forEach(x -> {
                 long count = dbList.stream().filter(f -> f.getFieldId().equals(x.getFieldId())).count();
@@ -135,7 +138,7 @@ public class SubjectServiceImpl implements SubjectService {
                     subjectfieldMapper.insertSelective(x);
                 }
                 //新加标签
-                Arrays.stream(x.getTagList()).forEach(tag -> {
+                Arrays.stream(x.getTagList()).filter(tag->!StringUtils.IsNullEmpty(tag)).forEach(tag -> {
                     SrTag dbTag = tagList.stream().filter(f -> f.getTagName().equals(tag.trim())).findFirst().orElse(null);
                     if (dbTag == null) {
                         dbTag = new SrTag();
@@ -166,7 +169,18 @@ public class SubjectServiceImpl implements SubjectService {
             SrSubjectfieldExample example = new SrSubjectfieldExample();
             SrSubjectfieldExample.Criteria criteria = example.or();
             criteria.andSubIdIn(idList);
-            subjectfieldMapper.selectByExample(example);
+            List<String> fieldList = subjectfieldMapper.selectByExample(example).stream().map(SrSubjectfield::getFieldId).collect(Collectors.toList());
+            if (fieldList.size() > 0) {
+                SrSubjectfieldtagExample tagExp = new SrSubjectfieldtagExample();
+                tagExp.or().andFieldIdIn(fieldList);
+                subjectfieldtagMapper.deleteByExample(tagExp);
+            }
+            subjectfieldMapper.deleteByExample(example);
+
+            //删除关联标签
+            SrSubjecttagExample stExp = new SrSubjecttagExample();
+            stExp.or().andSubIdIn(idList);
+            subjecttagMapper.deleteByExample(stExp);
 
             SrSubjectExample subExp = new SrSubjectExample();
             subExp.or().andSubIdIn(idList);

+ 11 - 0
src/main/resources/application.yml

@@ -86,6 +86,17 @@ spring:
       date: yyyy-MM-dd
       date-time: yyyy-MM-dd HH:mm:ss
 
+elasticsearch:
+  hosts: 192.168.0.68
+  port: 9200
+  schema: http
+  connectTimeOut: 1000
+  socketTimeOut: 30000
+  connectionRequestTimeOut: 500
+  maxConnectNum: 100
+  maxConnectPerRoute: 100
+  preStr: es_
+
 logging:
   config: classpath:logback-spring.xml
 mybatis:

+ 11 - 0
target/classes/application.yml

@@ -86,6 +86,17 @@ spring:
       date: yyyy-MM-dd
       date-time: yyyy-MM-dd HH:mm:ss
 
+elasticsearch:
+  hosts: 192.168.0.68
+  port: 9200
+  schema: http
+  connectTimeOut: 1000
+  socketTimeOut: 30000
+  connectionRequestTimeOut: 500
+  maxConnectNum: 100
+  maxConnectPerRoute: 100
+  preStr: es_
+
 logging:
   config: classpath:logback-spring.xml
 mybatis:

BIN
target/classes/com/bowintek/practice/config/CorsConfig.class


+ 1 - 2
vue/src/components/basic/query/drag-where.vue

@@ -310,7 +310,7 @@ export default defineComponent({
           options = this.operDics;
           break;
       }
-      if (operation == undefined && options != undefined) {
+      if (operation == undefined && options != undefined && options.length > 0) {
         operation = options[0].value;
       }
       return operation;
@@ -353,7 +353,6 @@ export default defineComponent({
 }
 
 .query-area-item-time {
-  width: 380px !important;
 }
 
 .query-area-body-edit {

+ 3 - 3
vue/src/components/basic/query/select-column.vue

@@ -5,7 +5,7 @@
         <b>列表显示字段</b>
         <DoubleLeftOutlined @click="showColumns=false"/>
       </div>
-      <div style="margin-left: 10px;">
+      <div style="margin-left: 1px;">
         <div :style="{ borderBottom: '1px solid #E9E9E9' }">
           <a-checkbox
             v-model:checked="checkAll"
@@ -171,7 +171,7 @@ export default defineComponent({
 
 <style lang="less" scoped>
 .query-index-column {
-  width: 20%;
+  width: 220px;
   border: solid 1px #e5e7eb;
   height: 100%;
 
@@ -180,7 +180,7 @@ export default defineComponent({
     padding: 10px;
 
     .ant-checkbox-wrapper:first-child {
-      margin-left: 8px;
+      margin-left: 10px;
     }
 
     .lable-operation {

+ 2 - 2
vue/src/components/basic/query/select-field.vue

@@ -1,7 +1,7 @@
 <template>
   <a-modal
     title="高级设置"
-    :width="700"
+    :width="800"
     :visible="options.visible"
     :ok-text="'确认'"
     :cancel-text="'取消'"
@@ -126,7 +126,7 @@ export default defineComponent({
   .field-item {
     width: 22%;
     border: 2px solid #eef0f4;
-    height: 50px;
+    height: 28px;
     display: flex;
     align-items: baseline;
     padding-left: 5px;