Quellcode durchsuchen

[26110201] 事件查询优化: 修复生产alarmDate过滤PostgreSQL类型错误(timestamp>=text / could not determine parameter type) - mapper不再拼装字符串时间, 改为service层由alarmDate(yyyy-MM-dd)计算当天00:00:00/23:59:59两个LocalDateTime边界传参, mapper绑定 alarm_create_time >= #{alarmDateBegin} and alarm_create_time <= #{alarmDateEnd}(LocalDateTime直传timestamp without time zone无时区转换, 与原语义一致)

taosj vor 16 Stunden
Ursprung
Commit
167355b159

+ 25 - 0
forecast-backend-server/src/main/java/com/ufo/project/alarm/domain/AlarmEventRecord.java

@@ -1,5 +1,6 @@
 package com.ufo.project.alarm.domain;
 
+import java.time.LocalDateTime;
 import com.ufo.base.framework.web.domain.BaseEntity;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
@@ -72,6 +73,12 @@ public class AlarmEventRecord extends BaseEntity
     /** 告警日期(查询条件: yyyy-MM-dd, 按当天 00:00:00~23:59:59 过滤) */
     private String alarmDate;
 
+    /** 告警时间下限(查询条件: service层由alarmDate计算, 当天00:00:00) */
+    private LocalDateTime alarmDateBegin;
+
+    /** 告警时间上限(查询条件: service层由alarmDate计算, 当天23:59:59) */
+    private LocalDateTime alarmDateEnd;
+
     public void setId(String id)
     {
         this.id = id;
@@ -207,6 +214,24 @@ public class AlarmEventRecord extends BaseEntity
     {
         return alarmDate;
     }
+    public void setAlarmDateBegin(LocalDateTime alarmDateBegin)
+    {
+        this.alarmDateBegin = alarmDateBegin;
+    }
+
+    public LocalDateTime getAlarmDateBegin()
+    {
+        return alarmDateBegin;
+    }
+    public void setAlarmDateEnd(LocalDateTime alarmDateEnd)
+    {
+        this.alarmDateEnd = alarmDateEnd;
+    }
+
+    public LocalDateTime getAlarmDateEnd()
+    {
+        return alarmDateEnd;
+    }
 
     @Override
     public String toString() {

+ 8 - 0
forecast-backend-server/src/main/java/com/ufo/project/alarm/service/impl/AlarmEventRecordServiceImpl.java

@@ -1,7 +1,9 @@
 package com.ufo.project.alarm.service.impl;
 
+import java.time.LocalDate;
 import java.util.List;
 import com.ufo.base.common.utils.DateUtils;
+import com.ufo.base.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ufo.project.alarm.mapper.AlarmEventRecordMapper;
@@ -41,6 +43,12 @@ public class AlarmEventRecordServiceImpl implements IAlarmEventRecordService
     @Override
     public List<AlarmEventRecord> selectAlarmEventRecordList(AlarmEventRecord alarmEventRecord)
     {
+        if (StringUtils.isNotEmpty(alarmEventRecord.getAlarmDate()))
+        {
+            LocalDate day = LocalDate.parse(alarmEventRecord.getAlarmDate());
+            alarmEventRecord.setAlarmDateBegin(day.atStartOfDay());
+            alarmEventRecord.setAlarmDateEnd(day.atTime(23, 59, 59));
+        }
         return alarmEventRecordMapper.selectAlarmEventRecordList(alarmEventRecord);
     }
 

+ 1 - 1
forecast-backend-server/src/main/resources/mybatis/alarm/AlarmEventRecordMapper.xml

@@ -40,7 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="alarmCreateTime != null  and alarmCreateTime != ''"> and alarm_create_time = #{alarmCreateTime}</if>
             <if test="confirmed != null and confirmed"> and process_flag = 2</if>
             <if test="confirmed != null and !confirmed"> and process_flag != 2</if>
-            <if test="alarmDate != null  and alarmDate != ''"> and alarm_create_time &gt;= concat(#{alarmDate}, ' 00:00:00')::timestamp and alarm_create_time &lt;= concat(#{alarmDate}, ' 23:59:59')::timestamp</if>
+            <if test="alarmDateBegin != null and alarmDateEnd != null"> and alarm_create_time &gt;= #{alarmDateBegin} and alarm_create_time &lt;= #{alarmDateEnd}</if>
             <if test="processFlag != null "> and process_flag = #{processFlag}</if>
             <if test="processPerson != null  and processPerson != ''"> and process_person = #{processPerson}</if>
             <if test="processResult != null  and processResult != ''"> and process_result = #{processResult}</if>