Fix Bug #503: AI修复
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
package com.openhis.web.pharmacy.mapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 住院发退药数据访问层
|
||||
*
|
||||
* 修复 Bug #503:
|
||||
* 发药明细单与汇总单触发时机不一致。
|
||||
* 新增动态 SQL 过滤逻辑,根据字典配置 `nurse_drug_submit_mode` 控制明细单可见性。
|
||||
*/
|
||||
@Mapper
|
||||
public interface InpatientDispensingMapper {
|
||||
|
||||
/**
|
||||
* 获取病区护士执行提交药品模式配置
|
||||
* @return 模式值 (1:需申请模式, 2:自动模式)
|
||||
*/
|
||||
@Select("SELECT dict_value FROM sys_dict_data WHERE dict_type = 'nurse_drug_submit_mode' AND status = '0' ORDER BY sort ASC LIMIT 1")
|
||||
String getDrugSubmitMode();
|
||||
|
||||
/**
|
||||
* 查询药房发药明细单
|
||||
*
|
||||
* @param submitMode 提交模式 (1:需申请, 2:自动)
|
||||
* @return 明细记录列表
|
||||
*
|
||||
* 修复逻辑:
|
||||
* 当 submitMode = '1' (需申请模式) 时,增加 AND apply_status = '1' 条件,
|
||||
* 确保只有护士完成“汇总发药申请”后,明细单才在药房端可见,与汇总单保持同步。
|
||||
* 当 submitMode = '2' (自动模式) 时,不附加过滤条件,执行即显示。
|
||||
*/
|
||||
@Select("<script>" +
|
||||
"SELECT " +
|
||||
" d.id, d.patient_id, d.patient_name, d.drug_code, d.drug_name, " +
|
||||
" d.quantity, d.unit, d.apply_status, d.create_time " +
|
||||
"FROM ip_dispensing_detail d " +
|
||||
"WHERE d.status = '0' " +
|
||||
"<if test='submitMode != null and submitMode == \"1\"'> " +
|
||||
" AND d.apply_status = '1' " +
|
||||
"</if>" +
|
||||
"ORDER BY d.create_time DESC" +
|
||||
"</script>")
|
||||
List<Map<String, Object>> selectDispensingDetails(@Param("submitMode") String submitMode);
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.openhis.web.pharmacy.service;
|
||||
|
||||
import com.openhis.web.pharmacy.mapper.InpatientDispensingMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 住院发退药业务服务
|
||||
*
|
||||
* 修复 Bug #503:
|
||||
* 统一发药明细与汇总单的数据触发时机,消除业务脱节风险。
|
||||
*/
|
||||
@Service
|
||||
public class InpatientDispensingService {
|
||||
|
||||
@Autowired
|
||||
private InpatientDispensingMapper dispensingMapper;
|
||||
|
||||
/**
|
||||
* 获取药房发药明细列表
|
||||
*
|
||||
* 修复说明:
|
||||
* 1. 优先读取《字典管理》中维护的 `nurse_drug_submit_mode` 参数。
|
||||
* 2. 若未配置或为空,默认降级为 '1' (需申请模式),保障账务与库存安全。
|
||||
* 3. 将模式参数透传至 Mapper,由 SQL 动态控制明细单可见范围,
|
||||
* 确保“需申请模式”下明细单与汇总单严格同步出现。
|
||||
*
|
||||
* @return 发药明细数据列表
|
||||
*/
|
||||
public List<Map<String, Object>> getDispensingDetails() {
|
||||
String mode = dispensingMapper.getDrugSubmitMode();
|
||||
// 默认使用“需申请模式”(1) 以保证业务安全
|
||||
if (mode == null || mode.trim().isEmpty()) {
|
||||
mode = "1";
|
||||
}
|
||||
return dispensingMapper.selectDispensingDetails(mode);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user