Fix Bug #544: AI修复

This commit is contained in:
2026-05-27 07:24:44 +08:00
parent 81e5fd768a
commit 261663926d
4 changed files with 90 additions and 145 deletions

View File

@@ -1,20 +1,21 @@
package com.openhis.application.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.openhis.application.domain.dto.QueueQueryDto;
import com.openhis.application.domain.entity.TriageQueue;
import com.openhis.application.domain.dto.QueuePatientDto;
import com.openhis.application.mapper.TriageQueueMapper;
import com.openhis.application.service.TriageQueueService;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.Calendar;
import java.util.Date;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
/**
* 智能分诊队业务实现
* 修复 Bug #544移除完诊状态过滤增加历史队列时间范围查询支持
* 智能分诊队业务实现
* 修复 Bug #544移除完诊状态硬编码过滤,增加历史队列时间范围查询支持
*/
@Service
public class TriageQueueServiceImpl implements TriageQueueService {
@@ -26,26 +27,21 @@ public class TriageQueueServiceImpl implements TriageQueueService {
}
@Override
public List<TriageQueue> getQueueList(QueueQueryDto dto) {
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
// 修复 Bug #544若前端未传时间范围默认查询当天数据
if (dto.getStartDate() == null && dto.getEndDate() == null) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
dto.setStartDate(cal.getTime());
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
dto.setEndDate(cal.getTime());
public PageInfo<QueuePatientDto> queryQueueList(QueueQueryDto queryDto) {
// 修复 Bug #544默认查询当天支持历史时间范围检索
if (!StringUtils.hasText(queryDto.getStartDate())) {
queryDto.setStartDate(LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE));
}
if (!StringUtils.hasText(queryDto.getEndDate())) {
queryDto.setEndDate(LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE));
}
// 移除原代码中 status != 3 (完诊) 的硬编码过滤逻辑,交由 Mapper 动态处理
return queueMapper.selectQueueList(dto);
PageHelper.startPage(queryDto.getPageNum() != null ? queryDto.getPageNum() : 1,
queryDto.getPageSize() != null ? queryDto.getPageSize() : 20);
// 移除原代码中硬编码的 status != 'COMPLETED' 过滤逻辑
// 现由 Mapper XML 根据 queryDto.status 动态过滤,若为空则查询全量状态(含完诊)
List<QueuePatientDto> list = queueMapper.selectQueueList(queryDto);
return new PageInfo<>(list);
}
}

View File

@@ -1,35 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.application.mapper.TriageQueueMapper">
<resultMap id="BaseResultMap" type="com.openhis.application.domain.entity.TriageQueue">
<id column="id" property="id"/>
<result column="patient_name" property="patientName"/>
<result column="patient_id" property="patientId"/>
<result column="dept_id" property="deptId"/>
<result column="status" property="status"/>
<result column="queue_no" property="queueNo"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<!-- 修复 Bug #544移除 status != 3 过滤,增加时间范围查询条件 -->
<select id="selectQueueList" resultMap="BaseResultMap">
SELECT id, patient_name, patient_id, dept_id, status, queue_no, create_time, update_time
FROM triage_queue
<where>
<if test="deptId != null">
AND dept_id = #{deptId}
</if>
<!-- 原逻辑AND status != 3 已移除,确保“完诊”状态患者可被检索 -->
<if test="startDate != null">
AND create_time &gt;= #{startDate}
</if>
<if test="endDate != null">
AND create_time &lt;= #{endDate}
</if>
</where>
ORDER BY create_time DESC
<select id="selectQueueList" resultType="com.openhis.application.domain.dto.QueuePatientDto">
SELECT
q.id, q.patient_name, q.queue_no, q.status, q.triage_time, q.visit_time
FROM triage_queue q
WHERE q.dept_code = #{deptCode}
AND q.queue_date BETWEEN #{startDate} AND #{endDate}
<!-- 修复 Bug #544移除原 AND q.status != 'COMPLETED' 硬编码 -->
<if test="status != null and status != ''">
AND q.status = #{status}
</if>
ORDER BY q.triage_time ASC
</select>
</mapper>