2 Commits

Author SHA1 Message Date
d083a3123a fix: Bug #177 修复新增医嘱报错 - category_code 类型转换错误
问题原因:
SQL查询中尝试将 wor_activity_definition.category_code(中文值如'检验'、'检查')
直接转换为 INTEGER 类型,导致 PostgreSQL 类型转换错误。

修复方案:
使用 CASE WHEN 语句将中文 category_code 映射为对应的整数值:
- 检验 -> 1
- 检查 -> 2
- 护理 -> 3
- 手术 -> 4
- 其他 -> 5

这与 ActivityType 枚举定义保持一致。
2026-03-12 15:53:06 +08:00
96c1927f8d fix: Bug #177 门诊医生站耗材医嘱保存提示未匹配库存信息
问题原因:
1. 前端查询耗材列表时未设置 adviceTableName 字段
2. 后端库存校验时严格要求 adviceTableName 匹配,导致耗材无法匹配库存

修复方案:
1. 前端(adviceBaseList.vue): 添加 adviceTableName = 'adm_device_definition' 字段
2. 后端(AdviceUtils.java): 添加容错处理,当 adviceTableName 为空时跳过该项匹配

双保险策略确保问题彻底解决。
2026-03-12 15:44:03 +08:00
3 changed files with 15 additions and 3 deletions

View File

@@ -98,11 +98,14 @@ public class AdviceUtils {
for (AdviceInventoryDto inventoryDto : adviceInventory) { for (AdviceInventoryDto inventoryDto : adviceInventory) {
// 匹配条件adviceDefinitionId, adviceTableName, locationId, lotNumber 同时相等 // 匹配条件adviceDefinitionId, adviceTableName, locationId, lotNumber 同时相等
// 如果选择了具体的批次号,校验库存时需要加上批次号的匹配条件 // 如果选择了具体的批次号,校验库存时需要加上批次号的匹配条件
// 🔧 Bug #177 修复:添加容错处理,如果 adviceTableName 为空则跳过该项匹配
boolean lotNumberMatch = StringUtils.isEmpty(saveDto.getLotNumber()) boolean lotNumberMatch = StringUtils.isEmpty(saveDto.getLotNumber())
|| saveDto.getLotNumber().equals(inventoryDto.getLotNumber()); || saveDto.getLotNumber().equals(inventoryDto.getLotNumber());
boolean tableNameMatch = StringUtils.isEmpty(saveDto.getAdviceTableName())
|| inventoryDto.getItemTable().equals(saveDto.getAdviceTableName());
// if (saveDto.) // if (saveDto.)
if (inventoryDto.getItemId().equals(saveDto.getAdviceDefinitionId()) if (inventoryDto.getItemId().equals(saveDto.getAdviceDefinitionId())
&& inventoryDto.getItemTable().equals(saveDto.getAdviceTableName()) && tableNameMatch
&& inventoryDto.getLocationId().equals(saveDto.getLocationId()) && lotNumberMatch) { && inventoryDto.getLocationId().equals(saveDto.getLocationId()) && lotNumberMatch) {
matched = true; matched = true;
// 检查库存是否充足 // 检查库存是否充足

View File

@@ -204,8 +204,16 @@
T1.yb_no AS yb_no, T1.yb_no AS yb_no,
'' AS product_name, '' AS product_name,
-- 前端"类型"列显示目录类别category_code -- 前端"类型"列显示目录类别category_code
-- 将category_code转换为整数,用于字典转换字典转换框架会自动填充activityType_dictText -- 🔧 Bug #177 修复:将category_code(中文)转换为对应的整数,用于字典转换
CAST(T1.category_code AS INTEGER) AS activity_type, -- 检验->1, 检查->2, 护理->3, 手术->4, 其他->5
CASE T1.category_code
WHEN '检验' THEN 1
WHEN '检查' THEN 2
WHEN '护理' THEN 3
WHEN '手术' THEN 4
WHEN '其他' THEN 5
ELSE 0
END AS activity_type,
NULL AS activity_type_dictText, NULL AS activity_type_dictText,
-- 前端"包装单位"列显示使用单位permitted_unit_code -- 前端"包装单位"列显示使用单位permitted_unit_code
T1.permitted_unit_code AS unit_code, T1.permitted_unit_code AS unit_code,

View File

@@ -359,6 +359,7 @@ async function getList() {
priceList: item.price ? [{ price: item.price }] : (item.retailPrice ? [{ price: item.retailPrice }] : []), priceList: item.price ? [{ price: item.price }] : (item.retailPrice ? [{ price: item.retailPrice }] : []),
inventoryList: [], inventoryList: [],
adviceDefinitionId: item.id, adviceDefinitionId: item.id,
adviceTableName: 'adm_device_definition', // 🔧 Bug #177 修复:添加耗材表名,用于后端库存匹配
chargeItemDefinitionId: item.id, chargeItemDefinitionId: item.id,
positionId: item.locationId, positionId: item.locationId,
positionName: item.locationId_dictText || '', positionName: item.locationId_dictText || '',