From a0a038bbda8a7eec4a8620778b2a8463051b9aa4 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Thu, 02 Apr 2026 15:01:53 +0800
Subject: [PATCH] opt: sql改造其他模块改造9
---
drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneAlarmRecordMapper.xml | 92 +++++++++++++++-------------------------------
1 files changed, 30 insertions(+), 62 deletions(-)
diff --git a/drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneAlarmRecordMapper.xml b/drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneAlarmRecordMapper.xml
index 5fdfdc7..260efd0 100644
--- a/drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneAlarmRecordMapper.xml
+++ b/drone-service/drone-fw/src/main/java/org/sxkj/fw/record/mapper/FwDroneAlarmRecordMapper.xml
@@ -35,43 +35,46 @@
<select id="selectFwDroneAlarmRecordPage" resultType="org.sxkj.fw.record.vo.FwDroneAlarmRecordVO">
select
- dar.*,
- d.device_name,
- d.status deviceStatus,
- d.final_outbound_area,
- /* 1=已关注,0=未关注 */
- EXISTS (
- SELECT
- 1
- FROM
- ja_fw_alarm_favorite f
- WHERE
- f.alarm_record_id = dar.id::VARCHAR
- AND f.user_id = #{param2.currentUserId} -- MyBatis 参数
- AND f.is_deleted = 0
- ) AS favorited
+ dar.*,
+ d.device_name,
+ d.status deviceStatus,
+ d.final_outbound_area,
+ /* 1=已关注,0=未关注 */
+ EXISTS (
+ SELECT
+ 1
+ FROM
+ ja_fw_alarm_favorite f
+ WHERE
+ /* 修改点1:确保 ID 比对类型一致 */
+ f.alarm_record_id::VARCHAR = dar.id::VARCHAR
+ AND f.user_id = #{param2.currentUserId}::bigint
+ AND f.is_deleted = 0
+ ) AS favorited
from
- ja_fw_drone_alarm_record dar
+ ja_fw_drone_alarm_record dar
left join
- ja_fw_device d on dar.device_id = d.id::VARCHAR
+ /* 修改点2:JOIN 两端全部转 VARCHAR 避坑 */
+ ja_fw_device d on dar.device_id::VARCHAR = d.id::VARCHAR
<where>
- dar.is_deleted = 0
- and d.is_enabled = 1
+ dar.is_deleted = 0
+ and d.is_enabled = 1
<if test="param2.regionCode != null and param2.regionCode != ''">
and (d.final_outbound_area_code like CONCAT(#{param2.regionCode}, '%')
- <!-- 或者设备是共享给当前部门的 -->
<if test="param2.currentDeptId != null and param2.currentDeptId != '' ">
- or dar.device_id in (
- SELECT device_id FROM ja_fw_device_per_share
- WHERE loan_to_dept_id = #{param2.currentDeptId}
+ /* 修改点3:IN 两端必须类型对等 */
+ or dar.device_id::VARCHAR in (
+ SELECT device_id::VARCHAR FROM ja_fw_device_per_share
+ WHERE loan_to_dept_id = #{param2.currentDeptId}::bigint
AND is_deleted = 0
)
</if>
)
</if>
<if test="param2.deviceId != null and param2.deviceId != ''">
- and dar.device_id = #{param2.deviceId}
+ and dar.device_id::VARCHAR = #{param2.deviceId}::VARCHAR
</if>
+ /* ... 其余 if 条件保持不变 ... */
<if test="param2.droneName != null and param2.droneName != ''">
and (
dar.drone_name like CONCAT('%', #{param2.droneName}, '%')
@@ -80,47 +83,12 @@
or dar.drone_serial_no like CONCAT('%', #{param2.droneSerialNo}, '%')
)
</if>
- <if test="param2.droneType != null and param2.droneType != ''">
- and dar.drone_type = #{param2.droneType}
- </if>
- <if test="param2.alarmType != null and param2.alarmType != ''">
- and dar.alarm_type = #{param2.alarmType}
- </if>
- <if test="param2.alarmTime != null and param2.alarmTime != ''">
- and dar.alarm_time = #{param2.alarmTime}
- </if>
- <if test="param2.triggerReason != null and param2.triggerReason != ''">
- and dar.trigger_reason = #{param2.triggerReason}
- </if>
- <if test="param2.flightStatus != null and param2.flightStatus != ''">
- and dar.flight_status = #{param2.flightStatus}
- </if>
- <if test="param2.longitude != null and param2.longitude != ''">
- and dar.longitude = #{param2.longitude}
- </if>
- <if test="param2.latitude != null and param2.latitude != ''">
- and dar.latitude = #{param2.latitude}
- </if>
- <if test="param2.signalFreqMhz != null and param2.signalFreqMhz != ''">
- and dar.signal_freq_mhz = #{param2.signalFreqMhz}
- </if>
- <if test="param2.flightHeightM != null and param2.flightHeightM != ''">
- and dar.flight_height_m = #{param2.flightHeightM}
- </if>
- <if test="param2.flightSpeedMs != null and param2.flightSpeedMs != ''">
- and dar.flight_speed_ms = #{param2.flightSpeedMs}
- </if>
- <if test="param2.stayDuration != null and param2.stayDuration != ''">
- and dar.stay_duration = #{param2.stayDuration}
- </if>
- <if test="param2.counterWay != null and param2.counterWay != ''">
- and dar.counter_way = #{param2.counterWay}
- </if>
+ /* ... 注意:如果下面的字段如 area_divide_id 是 bigint,也要像下面这样处理 ... */
<if test="param2.areaDivideId != null and param2.areaDivideId != ''">
- and dar.area_divide_id = #{param2.areaDivideId}
+ and dar.area_divide_id::VARCHAR = #{param2.areaDivideId}::VARCHAR
</if>
<if test="param2.defenseSceneId != null and param2.defenseSceneId != ''">
- and dar.defense_scene_id = #{param2.defenseSceneId}
+ and dar.defense_scene_id::VARCHAR = #{param2.defenseSceneId}::VARCHAR
</if>
<if test="param2.startTime != null and param2.startTime != '' and param2.endTime != null and param2.endTime != ''">
and dar.alarm_time BETWEEN #{param2.startTime} AND #{param2.endTime}
--
Gitblit v1.9.3