459242451@qq.com 3 年之前
父节点
当前提交
2aaec6ae89

+ 27 - 24
ruoyi-admin/src/main/java/com/ruoyi/web/job/GetDynamicShip.java

@@ -1,19 +1,15 @@
 package com.ruoyi.web.job;
 
-import cn.hutool.core.convert.Convert;
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.StrUtil;
 import com.ruoyi.common.constant.ElasticConstants;
 import com.ruoyi.framework.config.ElasticSearchClient;
-import com.ruoyi.system.domain.IllegalInfo;
 import lombok.extern.slf4j.Slf4j;
+import org.elasticsearch.index.query.QueryBuilder;
+import org.elasticsearch.index.query.QueryBuilders;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 
 /**
  * @Description: TODO
@@ -35,25 +31,32 @@ public class GetDynamicShip {
      */
     public void deleteEsExpire(Integer day) {
         log.info("删除ES中数据任务开始!");
-        Map<String, Object> equalsCondition = new HashMap<>();
-        equalsCondition.put("illegalStatus", "1");
-        Map<String, Object> rangeCondition = new HashMap<>();
-        rangeCondition.put("createTime", StrUtil.concat(true, "[", "", ",", DateUtil.formatDateTime(DateUtil.offsetDay(new Date(), -day)), "]"));
-        Map<String, Object> stringObjectMap = client.searchDocument(equalsCondition,
-                rangeCondition,
-                null,
-                1,
-                10000,
+        QueryBuilder queryBuilder = QueryBuilders.boolQuery()
+                .must(QueryBuilders.termQuery("illegalStatus", "1"))
+                .must(QueryBuilders.rangeQuery("createTime").from("2021-01-01 00:00:00").to(DateUtil.formatDateTime(DateUtil.offsetDay(new Date(), -day))));
+        client.deleteByCondition(queryBuilder,
                 ElasticConstants.AIS_ILLEGAL_SHIP,
-                ElasticConstants.SO2_ALERT);
-        List<IllegalInfo> pageList = Convert.toList(IllegalInfo.class, stringObjectMap.get("pageList"));
-        for (IllegalInfo illegalInfo : pageList) {
-            if ("xiutan".equals(illegalInfo.getIllegalType())) {
-                client.deleteDocument(ElasticConstants.AIS_ILLEGAL_SHIP, illegalInfo.getId());
-            } else if ("guangpu".equals(illegalInfo.getIllegalType())) {
-                client.deleteDocument(ElasticConstants.SO2_ALERT, illegalInfo.getId());
-            }
-        }
+                ElasticConstants.SO2_ALERT,
+                ElasticConstants.HEIYAN_SHIP_RECOGNITION);
+//        Map<String, Object> equalsCondition = new HashMap<>();
+//        equalsCondition.put("illegalStatus", "1");
+//        Map<String, Object> rangeCondition = new HashMap<>();
+//        rangeCondition.put("createTime", StrUtil.concat(true, "[", "", ",", DateUtil.formatDateTime(DateUtil.offsetDay(new Date(), -day)), "]"));
+//        Map<String, Object> stringObjectMap = client.searchDocument(equalsCondition,
+//                rangeCondition,
+//                null,
+//                1,
+//                10000,
+//                ElasticConstants.AIS_ILLEGAL_SHIP,
+//                ElasticConstants.SO2_ALERT);
+//        List<IllegalInfo> pageList = Convert.toList(IllegalInfo.class, stringObjectMap.get("pageList"));
+//        for (IllegalInfo illegalInfo : pageList) {
+//            if ("xiutan".equals(illegalInfo.getIllegalType())) {
+//                client.deleteDocument(ElasticConstants.AIS_ILLEGAL_SHIP, illegalInfo.getId());
+//            } else if ("guangpu".equals(illegalInfo.getIllegalType())) {
+//                client.deleteDocument(ElasticConstants.SO2_ALERT, illegalInfo.getId());
+//            }
+//        }
         log.info("删除ES中数据任务结束!");
     }
 }

+ 1 - 1
ruoyi-admin/src/main/resources/application-prod.yml

@@ -132,7 +132,7 @@ black:
 # 第三方接口
 third:
   shipEepReportRecInfo: http://198.17.188.111:6201/huiyan/getShipEepReportRec # 船舶进出港记录
-  shipBaseInfo: http://198.17.239.239:7001/getInfosByCondition # 船舶基本信息
+  shipBaseInfo: http://198.17.4.8:9004/getInfosByCondition # 船舶基本信息
   shipDynamicInfo: http://198.17.239.239:9004/getInfosByMmsi?mmsi= #船舶动态数据信息
   userTokenInfo: http://198.17.188.64:80/slipperBack/portal/user/userInfo # 大交管用户信息
   userLogin: http://198.17.188.64:80/slipperBack/main/mobile/login # 综合平台登录接口

+ 49 - 46
ruoyi-admin/src/main/resources/logback.xml

@@ -1,32 +1,33 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
     <!-- 日志存放路径 -->
-	<property name="log.path" value="../logs" />
+    <property name="log.path" value="../logs"/>
     <!-- 日志输出格式 -->
-	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
+    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
 
-	<!-- 控制台输出 -->
-	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-			<pattern>${log.pattern}</pattern>
-		</encoder>
-	</appender>
-	
-	<!-- 系统日志输出 -->
-	<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
-	    <file>${log.path}/sys-info.log</file>
+    <!-- 控制台输出 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- 系统日志输出 -->
+    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/sys-info.log</file>
         <!-- 循环政策:基于时间创建日志文件 -->
-		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
             <!-- 日志文件名格式 -->
-			<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-			<!-- 日志最大的历史 60天 -->
-			<maxHistory>60</maxHistory>
+            <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 日志最大的历史 60天 -->
+            <maxHistory>60</maxHistory>
             <maxFileSize>20MB</maxFileSize>
-		</rollingPolicy>
-		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-			<pattern>${log.pattern}</pattern>
-		</encoder>
-		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+        </rollingPolicy>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>${log.pattern}</pattern>
+            <charset class="java.nio.charset.Charset">UTF-8</charset>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <!-- 过滤的级别 -->
             <level>INFO</level>
             <!-- 匹配时的操作:接收(记录) -->
@@ -34,34 +35,35 @@
             <!-- 不匹配时的操作:拒绝(不记录) -->
             <onMismatch>DENY</onMismatch>
         </filter>
-	</appender>
-	
-	<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
-	    <file>${log.path}/sys-error.log</file>
+    </appender>
+
+    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/sys-error.log</file>
         <!-- 循环政策:基于时间创建日志文件 -->
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
             <!-- 日志文件名格式 -->
             <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
-			<!-- 日志最大的历史 60天 -->
-			<maxHistory>60</maxHistory>
+            <!-- 日志最大的历史 60天 -->
+            <maxHistory>60</maxHistory>
             <maxFileSize>20MB</maxFileSize>
         </rollingPolicy>
         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
             <pattern>${log.pattern}</pattern>
+            <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <!-- 过滤的级别 -->
             <level>ERROR</level>
-			<!-- 匹配时的操作:接收(记录) -->
+            <!-- 匹配时的操作:接收(记录) -->
             <onMatch>ACCEPT</onMatch>
-			<!-- 不匹配时的操作:拒绝(不记录) -->
+            <!-- 不匹配时的操作:拒绝(不记录) -->
             <onMismatch>DENY</onMismatch>
         </filter>
     </appender>
-	
-	<!-- 用户访问日志输出  -->
+
+    <!-- 用户访问日志输出  -->
     <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
-		<file>${log.path}/sys-user.log</file>
+        <file>${log.path}/sys-user.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
             <!-- 按天回滚 daily -->
             <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
@@ -71,25 +73,26 @@
         </rollingPolicy>
         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
             <pattern>${log.pattern}</pattern>
+            <charset class="java.nio.charset.Charset">UTF-8</charset>
         </encoder>
     </appender>
-	
-	<!-- 系统模块日志级别控制  -->
-	<logger name="com.ruoyi" level="info" />
-	<!-- Spring日志级别控制  -->
-	<logger name="org.springframework" level="warn" />
 
-	<root level="info">
-		<appender-ref ref="console" />
-	</root>
-	
-	<!--系统操作日志-->
+    <!-- 系统模块日志级别控制  -->
+    <logger name="com.ruoyi" level="info"/>
+    <!-- Spring日志级别控制  -->
+    <logger name="org.springframework" level="warn"/>
+
+    <root level="info">
+        <appender-ref ref="console"/>
+    </root>
+
+    <!--系统操作日志-->
     <root level="info">
-        <appender-ref ref="file_info" />
-        <appender-ref ref="file_error" />
+        <appender-ref ref="file_info"/>
+        <appender-ref ref="file_error"/>
     </root>
-	
-	<!--系统用户操作日志-->
+
+    <!--系统用户操作日志-->
     <logger name="sys-user" level="info">
         <appender-ref ref="sys-user"/>
     </logger>

+ 27 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/config/ElasticSearchClient.java

@@ -38,6 +38,8 @@ import org.elasticsearch.common.xcontent.XContentBuilder;
 import org.elasticsearch.common.xcontent.XContentFactory;
 import org.elasticsearch.core.TimeValue;
 import org.elasticsearch.index.query.*;
+import org.elasticsearch.index.reindex.BulkByScrollResponse;
+import org.elasticsearch.index.reindex.DeleteByQueryRequest;
 import org.elasticsearch.search.SearchHit;
 import org.elasticsearch.search.SearchHits;
 import org.elasticsearch.search.aggregations.AggregationBuilder;
@@ -261,6 +263,30 @@ public class ElasticSearchClient {
         });
     }
 
+    /**
+     * 根据条件删除
+     *
+     * @param queryBuilder
+     * @param indexName
+     */
+    public void deleteByCondition(QueryBuilder queryBuilder,
+                                  String... indexName) {
+        DeleteByQueryRequest request = new DeleteByQueryRequest(indexName);
+        request.setQuery(queryBuilder);
+        client.deleteByQueryAsync(request, RequestOptions.DEFAULT, new ActionListener<BulkByScrollResponse>() {
+            @Override
+            public void onResponse(BulkByScrollResponse bulkByScrollResponse) {
+                log.info("删除条件:{}", request);
+                log.info("删除成功.花费:{},共删除:{}条", bulkByScrollResponse.getTook(), bulkByScrollResponse.getDeleted());
+            }
+
+            @Override
+            public void onFailure(Exception e) {
+                log.info("删除失败:" + e.getMessage());
+            }
+        });
+    }
+
 
     /**
      * 文档数据批量插入
@@ -387,7 +413,7 @@ public class ElasticSearchClient {
         Map<String, Object> resultMap = new HashMap<>(8);
         List<Map<String, Object>> queryResult = new ArrayList<>();
         long totalNum = 0;
-        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
+        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder().trackTotalHits(true);
         BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
         // and 等值查询
         // 某一field=具体的值; 也可以某一field 的值 in 具体定义集合里的值