fix(mapper):修复SQL映射文件中的语法错误并优化查询性能

- 将反引号改为双引号以适配达梦数据库语法
- 替换MySQL特有函数为标准SQL函数(concat改为||操作符)
- 使用SYSDATE函数替代NOW函数
- 使用EXTRACT函数替代YEAR/MONTH函数提高兼容性
- 使用TRUNC函数替代DATE函数进行日期比较
- 将LIMIT语法改为FETCH FIRST语法(service):优化分页查询逻辑提高数据获取稳定性- 将LambdaQueryWrapper的last("limit1")改为标准分页查询
This commit is contained in:
hejiayang
2026-03-06 16:03:14 +08:00
parent 224dae23ee
commit 5233e6cb4b
8 changed files with 38 additions and 27 deletions
@@ -12,7 +12,7 @@
aem.host_model as hostModel, aem.host_model as hostModel,
aem.host_serial_num as hostSerialNum, aem.host_serial_num as hostSerialNum,
aem.battery_life as batteryLife, aem.battery_life as batteryLife,
aem.`status` AS STATUS, aem."status" AS STATUS,
aem.control_org_name AS controlDept, aem.control_org_name AS controlDept,
aem.manage_user_name AS custodian, aem.manage_user_name AS custodian,
aem.manage_user_mobile AS custodianTel, aem.manage_user_mobile AS custodianTel,
@@ -53,7 +53,7 @@
aem.NAME AS NAME, aem.NAME AS NAME,
aem.org_code AS orgCode, aem.org_code AS orgCode,
aem.CODE AS code, aem.CODE AS code,
aem.`status` AS STATUS, aem."status" AS STATUS,
aem.control_org_name AS controlDept, aem.control_org_name AS controlDept,
aem.custodian AS custodian, aem.custodian AS custodian,
aem.custodian_tel AS custodianTel, aem.custodian_tel AS custodianTel,
@@ -89,7 +89,7 @@
t2.manage_user_name, t2.manage_user_name,
t2.manage_user_mobile t2.manage_user_mobile
FROM FROM
`aed_equipment_maintain` t1 "aed_equipment_maintain" t1
LEFT JOIN aed_equipment_manger t2 ON t1.equipment_id = t2.id LEFT JOIN aed_equipment_manger t2 ON t1.equipment_id = t2.id
<where> <where>
<if test="name !=null and name !=''"> <if test="name !=null and name !=''">
@@ -56,7 +56,7 @@
t2.install_address, t2.install_address,
t2.status t2.status
FROM FROM
`aed_equipment_train` t1 "aed_equipment_train" t1
LEFT JOIN aed_equipment_manger t2 ON t1.equipment_id = t2.id LEFT JOIN aed_equipment_manger t2 ON t1.equipment_id = t2.id
<where> <where>
and t1.flag = #{trainType} and t1.flag = #{trainType}
@@ -6,7 +6,7 @@
DELETE t1 DELETE t1
FROM emergency_schedules_new_item t1 FROM emergency_schedules_new_item t1
INNER JOIN emergency_new_schedules t2 ON t1.schedules_id = t2.id INNER JOIN emergency_new_schedules t2 ON t1.schedules_id = t2.id
WHERE t2.schedules_time > NOW() WHERE t2.schedules_time > SYSDATE
AND t1.user_id = #{userId} AND t1.user_id = #{userId}
</delete> </delete>
@@ -28,7 +28,7 @@
<where> <where>
and t1.type = #{type} and t1.type = #{type}
<if test="name != null and name != ''"> <if test="name != null and name != ''">
AND t1.realname like concat('%',#{name},'%') AND t1.realname like '%' || #{name} || '%'
</if> </if>
<if test="centerIds != null and centerIds.size > 0"> <if test="centerIds != null and centerIds.size > 0">
and t1.center_id in and t1.center_id in
@@ -6,8 +6,8 @@
FROM emergency_schedules_new_item t1 FROM emergency_schedules_new_item t1
LEFT JOIN emergency_new_schedules t2 ON t1.schedules_id = t2.id LEFT JOIN emergency_new_schedules t2 ON t1.schedules_id = t2.id
WHERE WHERE
YEAR ( t2.schedules_time ) = #{year} EXTRACT(YEAR FROM t2.schedules_time) = #{year}
AND MONTH ( t2.schedules_time ) = #{month} AND EXTRACT(MONTH FROM t2.schedules_time) = #{month}
and t2.schedules_time is not null and t2.schedules_time is not null
AND t1.user_id = #{userId} AND t1.user_id = #{userId}
</select> </select>
@@ -51,13 +51,13 @@
<where> <where>
and a.del_flag = '0' and a.status = 1 and a.del_flag = '0' and a.status = 1
<if test="emergencySeriousDisease.realname != null"> <if test="emergencySeriousDisease.realname != null">
AND a.realname like concat('%',#{emergencySeriousDisease.realname},'%') AND a.realname like '%' || #{emergencySeriousDisease.realname} || '%'
</if> </if>
<if test="emergencySeriousDisease.reservationOffice != null"> <if test="emergencySeriousDisease.reservationOffice != null">
AND a.reservation_office like concat('%',#{emergencySeriousDisease.reservationOffice},'%') AND a.reservation_office like '%' || #{emergencySeriousDisease.reservationOffice} || '%'
</if> </if>
<if test="emergencySeriousDisease.reservationDoctor != null"> <if test="emergencySeriousDisease.reservationDoctor != null">
AND a.reservation_doctor like concat('%',#{emergencySeriousDisease.reservationDoctor},'%') AND a.reservation_doctor like '%' || #{emergencySeriousDisease.reservationDoctor} || '%'
</if> </if>
<if test="emergencySeriousDisease.hospitalId != null"> <if test="emergencySeriousDisease.hospitalId != null">
AND a.hospital_id = #{emergencySeriousDisease.hospitalId} AND a.hospital_id = #{emergencySeriousDisease.hospitalId}
@@ -66,10 +66,10 @@
AND a.register_category = #{emergencySeriousDisease.registerCategory} AND a.register_category = #{emergencySeriousDisease.registerCategory}
</if> </if>
<if test="emergencySeriousDisease.desireTime != null"> <if test="emergencySeriousDisease.desireTime != null">
AND DATE(a.desire_time) = DATE(#{emergencySeriousDisease.desireTime}) AND TRUNC(a.desire_time) = TRUNC(#{emergencySeriousDisease.desireTime})
</if> </if>
<if test="emergencySeriousDisease.reservationTime != null"> <if test="emergencySeriousDisease.reservationTime != null">
AND DATE(a.reservation_time) = DATE(#{emergencySeriousDisease.reservationTime}) AND TRUNC(a.reservation_time) = TRUNC(#{emergencySeriousDisease.reservationTime})
</if> </if>
<if test="emergencySeriousDisease.operatorId != null"> <if test="emergencySeriousDisease.operatorId != null">
AND a.operator_id = #{emergencySeriousDisease.operatorId} AND a.operator_id = #{emergencySeriousDisease.operatorId}
@@ -88,15 +88,16 @@
<where> <where>
and a.del_flag = '0' and a.status = 1 and user_id = #{userId} and a.del_flag = '0' and a.status = 1 and user_id = #{userId}
<if test="state != null and state != '' and state == '1'.toString()"> <if test="state != null and state != '' and state == '1'.toString()">
AND (`state` <![CDATA[ <= ]]> 4 or state = 7) AND ("state" <![CDATA[ <= ]]> 4 or state = 7)
</if> </if>
<if test="state != null and state != '' and state == '2'.toString()"> <if test="state != null and state != '' and state == '2'.toString()">
AND `state` <![CDATA[ > ]]> 4 and state != 7 AND "state" <![CDATA[ > ]]> 4 and state != 7
</if> </if>
</where> </where>
order by a.create_time desc order by a.create_time desc
</select> </select>
<select id="dutyTeam" resultType="java.lang.Integer"> <select id="dutyTeam" resultType="java.lang.Integer">
select * from (
SELECT t8.num SELECT t8.num
from (SELECT t1.user_type AS type, from (SELECT t1.user_type AS type,
count(1) AS num count(1) AS num
@@ -104,12 +105,12 @@
LEFT JOIN emergency_new_schedules t2 ON t1.schedules_id = t2.id LEFT JOIN emergency_new_schedules t2 ON t1.schedules_id = t2.id
LEFT JOIN emergency_profession_user t3 ON t3.center_id = t2.center_id LEFT JOIN emergency_profession_user t3 ON t3.center_id = t2.center_id
WHERE t3.user_id = #{userId} WHERE t3.user_id = #{userId}
AND DATE ( t2.schedules_time) = CURRENT_DATE AND TRUNC(t2.schedules_time) = TRUNC(SYSDATE)
GROUP BY GROUP BY
t1.user_type t1.user_type
) t8 ) t8
ORDER BY ORDER BY
t8.num t8.num
LIMIT 1 ) WHERE ROWNUM = 1
</select> </select>
</mapper> </mapper>
@@ -38,11 +38,11 @@
salvage_user_sex = #{sex} salvage_user_sex = #{sex}
</if> </if>
<if test="depart != null and depart != ''"> <if test="depart != null and depart != ''">
and salvage_user_depart like concat('', #{depart}, '%') and salvage_user_depart like #{depart} || '%'
</if> </if>
and del_flag = 0 and del_flag = 0
</where> </where>
GROUP BY Initiator_type; GROUP BY Initiator_type
</select> </select>
<select id="emergencyNum" resultType="com.renkang.emergency.archives.model.vo.EmergencyNum"> <select id="emergencyNum" resultType="com.renkang.emergency.archives.model.vo.EmergencyNum">
@@ -15,7 +15,7 @@
id, id,
name name
from emergency_resource from emergency_resource
where FIND_IN_SET(id,#{hospitalIds}) where INSTR(',' || #{hospitalIds} || ',', ',' || id || ',') > 0
and status = 1 and del_flag = 0 and status = 1 and del_flag = 0
</select> </select>
</mapper> </mapper>
@@ -332,9 +332,18 @@ public class IEmergencyCenterServiceImpl extends ServiceImpl<EmergencyCenterMapp
@Override @Override
public EmergencyCenter getCenterDetail() { public EmergencyCenter getCenterDetail() {
EmergencyCenterAdmin centerAdmin = centerAdminService.getOne(new LambdaQueryWrapper<EmergencyCenterAdmin>() LambdaQueryWrapper<EmergencyCenterAdmin> wrapper = new LambdaQueryWrapper<EmergencyCenterAdmin>()
.eq(EmergencyCenterAdmin::getUserId, GlobalUtils.getLoginUser().getId()) .eq(EmergencyCenterAdmin::getUserId, GlobalUtils.getLoginUser().getId())
.orderByDesc(EmergencyCenterAdmin::getCreateTime).last("limit 1")); .orderByDesc(EmergencyCenterAdmin::getCreateTime);
Page<EmergencyCenterAdmin> page = new Page<>(1, 1);
IPage<EmergencyCenterAdmin> pageResult = centerAdminService.page(page, wrapper);
EmergencyCenterAdmin centerAdmin = null;
if (pageResult.getRecords() != null && !pageResult.getRecords().isEmpty()) {
centerAdmin = pageResult.getRecords().get(0);
}
if (ObjectUtil.isEmpty(centerAdmin)) { if (ObjectUtil.isEmpty(centerAdmin)) {
return new EmergencyCenter(); return new EmergencyCenter();
} }
@@ -354,7 +363,7 @@ public class IEmergencyCenterServiceImpl extends ServiceImpl<EmergencyCenterMapp
.like(EmergencyCenter::getServiceScope, "," + departCode) .like(EmergencyCenter::getServiceScope, "," + departCode)
.or() .or()
.eq(EmergencyCenter::getServiceScope, departCode) .eq(EmergencyCenter::getServiceScope, departCode)
).last("limit 1"); ).last("FETCH FIRST 1 ROWS ONLY");
EmergencyCenter center = getOne(centerWrapper); EmergencyCenter center = getOne(centerWrapper);
if (ObjectUtil.isEmpty(center)) { if (ObjectUtil.isEmpty(center)) {
centerWrapper = new LambdaQueryWrapper<>(); centerWrapper = new LambdaQueryWrapper<>();
@@ -366,7 +375,7 @@ public class IEmergencyCenterServiceImpl extends ServiceImpl<EmergencyCenterMapp
.like(EmergencyCenter::getServiceScope, "," + orgCode) .like(EmergencyCenter::getServiceScope, "," + orgCode)
.or() .or()
.eq(EmergencyCenter::getServiceScope, orgCode) .eq(EmergencyCenter::getServiceScope, orgCode)
).last("limit 1"); ).last("FETCH FIRST 1 ROWS ONLY");
center = getOne(centerWrapper); center = getOne(centerWrapper);
} }
if (ObjectUtil.isEmpty(center)) { if (ObjectUtil.isEmpty(center)) {
@@ -379,8 +388,9 @@ public class IEmergencyCenterServiceImpl extends ServiceImpl<EmergencyCenterMapp
.like(EmergencyCenter::getServiceScope, "," + userOrgCode) .like(EmergencyCenter::getServiceScope, "," + userOrgCode)
.or() .or()
.eq(EmergencyCenter::getServiceScope, userOrgCode) .eq(EmergencyCenter::getServiceScope, userOrgCode)
).last("limit 1"); );
center = getOne(centerWrapper); List<EmergencyCenter> list = list(centerWrapper);
center = CollUtil.isEmpty(list) ? null : list.get(0);
} }
if (ObjectUtil.isNotEmpty(center)) { if (ObjectUtil.isNotEmpty(center)) {
// 值班时间 // 值班时间