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_serial_num as hostSerialNum,
aem.battery_life as batteryLife,
aem.`status` AS STATUS,
aem."status" AS STATUS,
aem.control_org_name AS controlDept,
aem.manage_user_name AS custodian,
aem.manage_user_mobile AS custodianTel,
@@ -53,7 +53,7 @@
aem.NAME AS NAME,
aem.org_code AS orgCode,
aem.CODE AS code,
aem.`status` AS STATUS,
aem."status" AS STATUS,
aem.control_org_name AS controlDept,
aem.custodian AS custodian,
aem.custodian_tel AS custodianTel,
@@ -89,7 +89,7 @@
t2.manage_user_name,
t2.manage_user_mobile
FROM
`aed_equipment_maintain` t1
"aed_equipment_maintain" t1
LEFT JOIN aed_equipment_manger t2 ON t1.equipment_id = t2.id
<where>
<if test="name !=null and name !=''">
@@ -56,7 +56,7 @@
t2.install_address,
t2.status
FROM
`aed_equipment_train` t1
"aed_equipment_train" t1
LEFT JOIN aed_equipment_manger t2 ON t1.equipment_id = t2.id
<where>
and t1.flag = #{trainType}
@@ -6,7 +6,7 @@
DELETE t1
FROM emergency_schedules_new_item t1
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}
</delete>
@@ -28,7 +28,7 @@
<where>
and t1.type = #{type}
<if test="name != null and name != ''">
AND t1.realname like concat('%',#{name},'%')
AND t1.realname like '%' || #{name} || '%'
</if>
<if test="centerIds != null and centerIds.size > 0">
and t1.center_id in
@@ -6,8 +6,8 @@
FROM emergency_schedules_new_item t1
LEFT JOIN emergency_new_schedules t2 ON t1.schedules_id = t2.id
WHERE
YEAR ( t2.schedules_time ) = #{year}
AND MONTH ( t2.schedules_time ) = #{month}
EXTRACT(YEAR FROM t2.schedules_time) = #{year}
AND EXTRACT(MONTH FROM t2.schedules_time) = #{month}
and t2.schedules_time is not null
AND t1.user_id = #{userId}
</select>
@@ -51,13 +51,13 @@
<where>
and a.del_flag = '0' and a.status = 1
<if test="emergencySeriousDisease.realname != null">
AND a.realname like concat('%',#{emergencySeriousDisease.realname},'%')
AND a.realname like '%' || #{emergencySeriousDisease.realname} || '%'
</if>
<if test="emergencySeriousDisease.reservationOffice != null">
AND a.reservation_office like concat('%',#{emergencySeriousDisease.reservationOffice},'%')
AND a.reservation_office like '%' || #{emergencySeriousDisease.reservationOffice} || '%'
</if>
<if test="emergencySeriousDisease.reservationDoctor != null">
AND a.reservation_doctor like concat('%',#{emergencySeriousDisease.reservationDoctor},'%')
AND a.reservation_doctor like '%' || #{emergencySeriousDisease.reservationDoctor} || '%'
</if>
<if test="emergencySeriousDisease.hospitalId != null">
AND a.hospital_id = #{emergencySeriousDisease.hospitalId}
@@ -66,10 +66,10 @@
AND a.register_category = #{emergencySeriousDisease.registerCategory}
</if>
<if test="emergencySeriousDisease.desireTime != null">
AND DATE(a.desire_time) = DATE(#{emergencySeriousDisease.desireTime})
AND TRUNC(a.desire_time) = TRUNC(#{emergencySeriousDisease.desireTime})
</if>
<if test="emergencySeriousDisease.reservationTime != null">
AND DATE(a.reservation_time) = DATE(#{emergencySeriousDisease.reservationTime})
AND TRUNC(a.reservation_time) = TRUNC(#{emergencySeriousDisease.reservationTime})
</if>
<if test="emergencySeriousDisease.operatorId != null">
AND a.operator_id = #{emergencySeriousDisease.operatorId}
@@ -88,15 +88,16 @@
<where>
and a.del_flag = '0' and a.status = 1 and user_id = #{userId}
<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 test="state != null and state != '' and state == '2'.toString()">
AND `state` <![CDATA[ > ]]> 4 and state != 7
AND "state" <![CDATA[ > ]]> 4 and state != 7
</if>
</where>
order by a.create_time desc
</select>
<select id="dutyTeam" resultType="java.lang.Integer">
select * from (
SELECT t8.num
from (SELECT t1.user_type AS type,
count(1) AS num
@@ -104,12 +105,12 @@
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
WHERE t3.user_id = #{userId}
AND DATE ( t2.schedules_time) = CURRENT_DATE
AND TRUNC(t2.schedules_time) = TRUNC(SYSDATE)
GROUP BY
t1.user_type
) t8
ORDER BY
t8.num
LIMIT 1
) WHERE ROWNUM = 1
</select>
</mapper>
</mapper>
@@ -38,11 +38,11 @@
salvage_user_sex = #{sex}
</if>
<if test="depart != null and depart != ''">
and salvage_user_depart like concat('', #{depart}, '%')
and salvage_user_depart like #{depart} || '%'
</if>
and del_flag = 0
</where>
GROUP BY Initiator_type;
GROUP BY Initiator_type
</select>
<select id="emergencyNum" resultType="com.renkang.emergency.archives.model.vo.EmergencyNum">
@@ -15,7 +15,7 @@
id,
name
from emergency_resource
where FIND_IN_SET(id,#{hospitalIds})
where INSTR(',' || #{hospitalIds} || ',', ',' || id || ',') > 0
and status = 1 and del_flag = 0
</select>
</mapper>
@@ -332,9 +332,18 @@ public class IEmergencyCenterServiceImpl extends ServiceImpl<EmergencyCenterMapp
@Override
public EmergencyCenter getCenterDetail() {
EmergencyCenterAdmin centerAdmin = centerAdminService.getOne(new LambdaQueryWrapper<EmergencyCenterAdmin>()
LambdaQueryWrapper<EmergencyCenterAdmin> wrapper = new LambdaQueryWrapper<EmergencyCenterAdmin>()
.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)) {
return new EmergencyCenter();
}
@@ -354,7 +363,7 @@ public class IEmergencyCenterServiceImpl extends ServiceImpl<EmergencyCenterMapp
.like(EmergencyCenter::getServiceScope, "," + departCode)
.or()
.eq(EmergencyCenter::getServiceScope, departCode)
).last("limit 1");
).last("FETCH FIRST 1 ROWS ONLY");
EmergencyCenter center = getOne(centerWrapper);
if (ObjectUtil.isEmpty(center)) {
centerWrapper = new LambdaQueryWrapper<>();
@@ -366,7 +375,7 @@ public class IEmergencyCenterServiceImpl extends ServiceImpl<EmergencyCenterMapp
.like(EmergencyCenter::getServiceScope, "," + orgCode)
.or()
.eq(EmergencyCenter::getServiceScope, orgCode)
).last("limit 1");
).last("FETCH FIRST 1 ROWS ONLY");
center = getOne(centerWrapper);
}
if (ObjectUtil.isEmpty(center)) {
@@ -379,8 +388,9 @@ public class IEmergencyCenterServiceImpl extends ServiceImpl<EmergencyCenterMapp
.like(EmergencyCenter::getServiceScope, "," + userOrgCode)
.or()
.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)) {
// 值班时间