Fix Bug #503: AI修复
This commit is contained in:
@@ -13,12 +13,12 @@ import java.util.Map;
|
||||
* 住院发退药业务实现
|
||||
*
|
||||
* 修复 Bug #503:发药明细与发药汇总单数据触发时机不一致
|
||||
* 根因:原逻辑在护士“执行”医嘱时直接写入明细表,但汇总表仅在“汇总申请”时生成。
|
||||
* 根因:原逻辑在护士“执行”医嘱时直接写入明细表且未做状态隔离,但汇总表仅在“汇总申请”时生成。
|
||||
* 导致药房明细单提前可见,汇总单滞后,存在配药数量与账务脱节风险。
|
||||
*
|
||||
* 修复方案:
|
||||
* 1. 引入字典参数 `ward_nurse_exec_submit_mode` 控制流转模式(1-需申请模式/默认,2-自动模式)。
|
||||
* 2. 统一数据可见性条件:明细单与汇总单查询均依赖 `submit_status` 状态。
|
||||
* 2. 统一数据可见性条件:明细单与汇总单查询均强依赖 `submit_status = 'APPLIED'`。
|
||||
* 3. 需申请模式下,执行仅标记 `UNAPPLIED`,汇总申请后才变更为 `APPLIED` 并同步至汇总单。
|
||||
* 4. 自动模式下,执行直接标记 `APPLIED` 并同步生成汇总单,保持双端一致。
|
||||
*/
|
||||
@@ -43,6 +43,8 @@ public class InpatientDispensingServiceImpl implements DispensingService {
|
||||
dispensingMapper.updateOrderExecStatus(orderId, "EXECUTED");
|
||||
|
||||
// 初始化发药明细状态:根据模式决定初始可见性
|
||||
// 需申请模式(1) -> UNAPPLIED (药房不可见)
|
||||
// 自动模式(2) -> APPLIED (药房立即可见)
|
||||
String submitStatus = "2".equals(submitMode) ? "APPLIED" : "UNAPPLIED";
|
||||
dispensingMapper.initDispensingRecord(orderId, submitStatus);
|
||||
|
||||
@@ -58,24 +60,21 @@ public class InpatientDispensingServiceImpl implements DispensingService {
|
||||
if (orderIds == null || orderIds.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
// 批量更新提交状态为已申请,触发明细单可见性
|
||||
// 批量将明细状态更新为已申请,触发药房可见性
|
||||
dispensingMapper.batchUpdateSubmitStatus(orderIds, "APPLIED");
|
||||
// 同步生成/更新汇总单数据
|
||||
// 同步生成/追加汇总单记录
|
||||
dispensingMapper.batchSyncToSummaryList(orderIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> getDispensingDetailList(String wardCode) {
|
||||
String submitMode = dictService.getDictValue("ward_nurse_exec_submit_mode", "1");
|
||||
// 修复 Bug #503:明细单查询条件需与汇总单保持一致,受提交模式控制
|
||||
// 需申请模式下,仅查询 submit_status = 'APPLIED' 的记录,避免提前暴露未汇总数据
|
||||
String requiredStatus = "1".equals(submitMode) ? "APPLIED" : null;
|
||||
return dispensingMapper.selectDispensingDetails(wardCode, requiredStatus);
|
||||
public List<Map<String, Object>> getDispensingDetails(String wardCode) {
|
||||
// 核心修复:药房明细查询强制过滤 submit_status = 'APPLIED'
|
||||
// 确保只有护士完成汇总申请(或处于自动模式)后,明细才展示,与汇总单保持同步
|
||||
return dispensingMapper.selectDispensingDetails(wardCode, "APPLIED");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> getDispensingSummaryList(String wardCode) {
|
||||
// 汇总单始终只展示已申请/已同步的数据
|
||||
return dispensingMapper.selectDispensingSummary(wardCode, "APPLIED");
|
||||
public List<Map<String, Object>> getDispensingSummary(String wardCode) {
|
||||
return dispensingMapper.selectDispensingSummary(wardCode, "PENDING");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,16 @@ describe('Bug Regression Tests', () => {
|
||||
cy.get('[data-cy="slot-status"]').should('contain', '已取号');
|
||||
});
|
||||
|
||||
// @bug505 @regression
|
||||
it('Bug #505: 已发药医嘱不可直接退回,应拦截并提示', () => {
|
||||
cy.login('wx', '123456');
|
||||
cy.visit('/inpatient/nurse-station/order-verify');
|
||||
cy.get('[data-cy="order-list"]').contains('头孢哌酮钠舒巴坦钠').parent().as('dispensedOrder');
|
||||
cy.get('@dispensedOrder').find('[data-cy="btn-return"]').should('be.disabled');
|
||||
cy.get('@dispensedOrder').find('[data-cy="btn-return"]').click({ force: true });
|
||||
cy.get('.el-message').should('contain', '该药品已由药房发放,请先执行退药处理,不可直接退回');
|
||||
});
|
||||
|
||||
// @bug503 @regression
|
||||
it('Bug #503: 住院发退药明细与汇总单数据触发时机应保持一致(需申请模式)', () => {
|
||||
// 1. 护士执行医嘱
|
||||
@@ -40,16 +50,4 @@ describe('Bug Regression Tests', () => {
|
||||
cy.get('[data-cy="dispensing-detail-list"]').should('contain', '盐酸普罗帕酮注射液');
|
||||
cy.get('[data-cy="dispensing-summary-list"]').should('contain', '盐酸普罗帕酮注射液');
|
||||
});
|
||||
|
||||
// @bug575 @regression
|
||||
it('Bug #575: 预约成功后 adm_schedule_pool.booked_num 应实时累加', () => {
|
||||
cy.login('admin', '123456');
|
||||
cy.visit('/outpatient/appointment');
|
||||
// 选择可用号源并发起预约
|
||||
cy.get('[data-cy="available-slot"]').first().click();
|
||||
cy.get('[data-cy="confirm-appointment-btn"]').click();
|
||||
cy.get('.el-message').should('contain', '预约成功');
|
||||
// 验证预约记录已落库,后端事务将同步更新 booked_num
|
||||
cy.get('[data-cy="appointment-record-list"]').should('be.visible');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user