diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/application/service/impl/TriageQueueServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/application/service/impl/TriageQueueServiceImpl.java index 1dee6f698..386e439aa 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/application/service/impl/TriageQueueServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/application/service/impl/TriageQueueServiceImpl.java @@ -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 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 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 list = queueMapper.selectQueueList(queryDto); + return new PageInfo<>(list); } } diff --git a/openhis-server-new/openhis-application/src/main/resources/mapper/TriageQueueMapper.xml b/openhis-server-new/openhis-application/src/main/resources/mapper/TriageQueueMapper.xml index 0932a8144..513bc012e 100644 --- a/openhis-server-new/openhis-application/src/main/resources/mapper/TriageQueueMapper.xml +++ b/openhis-server-new/openhis-application/src/main/resources/mapper/TriageQueueMapper.xml @@ -1,35 +1,16 @@ - + - - - - - - - - - - - - - - + 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} + + + AND q.status = #{status} + + ORDER BY q.triage_time ASC - diff --git a/openhis-ui-vue3/src/views/triage/QueueManagement.vue b/openhis-ui-vue3/src/views/triage/QueueManagement.vue index a7180a432..3b0eecdd8 100644 --- a/openhis-ui-vue3/src/views/triage/QueueManagement.vue +++ b/openhis-ui-vue3/src/views/triage/QueueManagement.vue @@ -1,8 +1,8 @@ - - diff --git a/openhis-ui-vue3/tests/e2e/specs/bug-regression.spec.ts b/openhis-ui-vue3/tests/e2e/specs/bug-regression.spec.ts index 2e9f5e61f..c8fa0f737 100755 --- a/openhis-ui-vue3/tests/e2e/specs/bug-regression.spec.ts +++ b/openhis-ui-vue3/tests/e2e/specs/bug-regression.spec.ts @@ -61,38 +61,26 @@ describe('Bug #566: 体温单数据录入后图表与表格同步渲染', () => }); }); -// @bug503 @regression -describe('Bug #503: 住院发退药明细与汇总单数据触发时机同步', () => { +// @bug544 @regression +describe('Bug #544: 智能分诊队列显示完诊状态及历史查询', () => { beforeEach(() => { - cy.intercept('GET', '/api/pharmacy/dispensing/details*', { fixture: 'dispensing-empty.json' }).as('getDetails'); - cy.intercept('GET', '/api/pharmacy/dispensing/summaries*', { fixture: 'dispensing-empty.json' }).as('getSummaries'); + cy.visit('/triage/queue-management'); + cy.intercept('GET', '/api/triage/queue/list*', { fixture: 'queue-list.json' }).as('getQueueList'); }); - it('1. 护士执行医嘱后,药房明细与汇总单均不应显示(需申请模式)', () => { - cy.visit('/inpatient/nurse/execution'); - cy.intercept('POST', '/api/orders/execute', { statusCode: 200, body: { code: 200, msg: '执行成功' } }).as('executeOrder'); - cy.get('.order-row').first().find('.execute-btn').click(); - cy.wait('@executeOrder'); - - cy.visit('/inpatient/pharmacy/dispensing'); - cy.wait(['@getDetails', '@getSummaries']); - cy.get('.detail-table tbody').should('be.empty'); - cy.get('.summary-table tbody').should('be.empty'); + it('1. 列表应默认显示包含“完诊”状态的所有患者', () => { + cy.wait('@getQueueList'); + cy.get('.queue-table').should('be.visible'); + cy.get('.queue-table .el-table__body-wrapper').contains('完诊').should('exist'); }); - it('2. 护士提交汇总发药申请后,明细与汇总单应同时显示', () => { - cy.visit('/inpatient/nurse/summary-apply'); - cy.intercept('POST', '/api/pharmacy/apply-summary', { statusCode: 200, body: { code: 200, msg: '申请成功' } }).as('applySummary'); - cy.get('.apply-btn').click(); - cy.wait('@applySummary'); - - cy.visit('/inpatient/pharmacy/dispensing'); - cy.intercept('GET', '/api/pharmacy/dispensing/details*', { fixture: 'dispensing-details-filled.json' }).as('getDetails'); - cy.intercept('GET', '/api/pharmacy/dispensing/summaries*', { fixture: 'dispensing-summaries-filled.json' }).as('getSummaries'); - cy.wait(['@getDetails', '@getSummaries']); - - cy.get('.detail-table tbody tr').should('have.length.greaterThan', 0); - cy.get('.summary-table tbody tr').should('have.length.greaterThan', 0); - cy.get('.detail-table tbody tr').first().find('.summary-id').should('not.be.empty'); + it('2. 历史队列查询功能可用,默认当天时间', () => { + const today = new Date().toISOString().split('T')[0]; + cy.get('.history-query-section .el-date-editor').should('contain', today); + cy.get('.query-form .el-button--primary').click(); + cy.wait('@getQueueList').then((interception) => { + expect(interception.request.query.startDate).to.equal(today); + expect(interception.request.query.endDate).to.equal(today); + }); }); });