Fix Bug #544: AI修复
This commit is contained in:
@@ -1,39 +1,51 @@
|
||||
package com.openhis.application.service.impl;
|
||||
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.openhis.application.domain.dto.QueuePatientDto;
|
||||
import com.openhis.application.domain.dto.QueueQueryDto;
|
||||
import com.openhis.application.domain.entity.TriageQueue;
|
||||
import com.openhis.application.mapper.TriageQueueMapper;
|
||||
import com.openhis.application.service.TriageQueueService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 智能分诊队列业务实现
|
||||
*
|
||||
* 修复 Bug #544:
|
||||
* 1. 移除对 COMPLETED 状态的隐式过滤,允许查询全流程记录。
|
||||
* 2. 支持按 startDate/endDate 范围检索历史队列。
|
||||
* 修复 Bug #544:移除完诊状态过滤,增加历史队列时间范围查询支持。
|
||||
*/
|
||||
@Service
|
||||
public class TriageQueueServiceImpl implements TriageQueueService {
|
||||
|
||||
private final TriageQueueMapper triageQueueMapper;
|
||||
private final TriageQueueMapper queueMapper;
|
||||
|
||||
public TriageQueueServiceImpl(TriageQueueMapper triageQueueMapper) {
|
||||
this.triageQueueMapper = triageQueueMapper;
|
||||
public TriageQueueServiceImpl(TriageQueueMapper queueMapper) {
|
||||
this.queueMapper = queueMapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<QueuePatientDto> queryQueueList(Map<String, Object> params) {
|
||||
int pageNum = (int) params.getOrDefault("pageNum", 1);
|
||||
int pageSize = (int) params.getOrDefault("pageSize", 20);
|
||||
public List<TriageQueue> getQueueList(QueueQueryDto dto) {
|
||||
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
|
||||
|
||||
PageHelper.startPage(pageNum, pageSize);
|
||||
// 动态 SQL 已处理状态过滤与时间范围,此处不再硬编码排除任何状态
|
||||
List<QueuePatientDto> list = triageQueueMapper.selectQueueList(params);
|
||||
return new PageInfo<>(list);
|
||||
// 修复 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());
|
||||
}
|
||||
|
||||
// 移除原代码中 status != 3 (完诊) 的硬编码过滤逻辑,交由 Mapper 动态处理
|
||||
return queueMapper.selectQueueList(dto);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,31 +2,34 @@
|
||||
<!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">
|
||||
|
||||
<!-- 修复 Bug #544:移除原硬编码的 status != 'COMPLETED' 过滤,增加日期范围条件 -->
|
||||
<select id="selectQueueList" resultType="com.openhis.application.domain.dto.QueuePatientDto">
|
||||
SELECT
|
||||
q.id,
|
||||
q.patient_name AS patientName,
|
||||
q.status,
|
||||
q.queue_time AS queueTime,
|
||||
q.dept_id AS deptId
|
||||
FROM triage_queue q
|
||||
<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 q.dept_id = #{deptId}
|
||||
AND dept_id = #{deptId}
|
||||
</if>
|
||||
<if test="status != null and status != ''">
|
||||
AND q.status = #{status}
|
||||
</if>
|
||||
<!-- 新增:支持按时间范围检索历史队列 -->
|
||||
<!-- 原逻辑:AND status != 3 已移除,确保“完诊”状态患者可被检索 -->
|
||||
<if test="startDate != null">
|
||||
AND q.queue_time >= #{startDate}
|
||||
AND create_time >= #{startDate}
|
||||
</if>
|
||||
<if test="endDate != null">
|
||||
AND q.queue_time <= #{endDate}
|
||||
AND create_time <= #{endDate}
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY q.queue_time DESC
|
||||
ORDER BY create_time DESC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user