荀彧
a09020a4fd
Fix Bug #401 : 门诊完诊审计日志错误:div_log 表中 pool_id 与 slot_id 存值与设计规范不符
...
调整完诊时 div_log 的 pool_id/slot_id 获取优先级:优先使用 triage_queue_item
(挂号时录入的号源信息,为权威来源),队列项不存在或值缺失时回退使用
encounter → order → slot → pool 链路
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 10:25:48 +08:00
关羽
f7a3f658fb
Merge remote-tracking branch 'origin/关羽' - resolve conflicts
2026-05-13 09:39:03 +08:00
关羽
dd36dc49ea
Fix Bug #400 : 门诊医生站点击【完诊】后,triage_queue_item 表 status 字段未按规范更新为 30
...
根因:完诊时使用 triageQueueItemService.updateById(entity) 更新队列状态,
实体序列化过程中 status 字段为 Integer 类型但数据库列为 VARCHAR(50),
可能导致 MyBatis-Plus 的 UPDATE SQL 未正确包含 status 字段。
修复方案:改用 LambdaUpdateWrapper 直接构造 UPDATE SQL,确保 status 字段被正确更新为 30。
同时增加成功/失败日志,便于后续排查。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 09:38:13 +08:00
张飞
3590a18adc
Fix Bug #362 : 住院护士站:入出转管理双击查看详情时,"入科时间"字段显示当前系统时间而非实际入科时间
...
在 selectAdmissionPatientInfo SQL 中,startTime 原取自 bed.start_time(床位级别的位置记录),
当该 LEFT JOIN 无匹配记录时返回 NULL,前端 fallback 到当前系统时间。
改为 COALESCE(bed.start_time, ae.start_time),无床位记录时回退到 encounter 的入院时间。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 01:03:24 +08:00
刘备
6ddd9bb2dc
Fix Bug #489 : 【医嘱闭环】医生站签发单条长期药品医嘱,护士校对界面生成重复(两条)待校对记录
...
在住院医生站签发流程的 handMedication() 方法中增加去重逻辑,
与门诊医生站保持一致,使用 patientId+encounterId+adviceDefinitionId+dose+methodCode+rateCode
作为唯一键,防止前端重复提交导致数据库产生重复医嘱记录。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:16:01 +08:00
刘备
c8ed4e5856
Fix Bug #491 : 【执行科室配置】保存配置时系统报错 - 修复Organization.getName()空指针异常
...
根因分析:
1. organizationLocationInit() 中 Organization.getName() 未做空值过滤,若数据库存在name为null的科室记录会NPE
2. addOrEditOrgLoc() 中 activityDefinitionMapper.selectById().getName() 未对selectById返回null做防护
3. addOrEditOrgLoc() 缺少organizationId前置校验,空值传入可能导致后续流程异常
修复内容:
- 第74行:stream中增加 .filter(organization -> organization != null && organization.getName() != null)
- 第136-138行:增加organizationId为null时的校验,返回友好错误提示
- 第145-147行:将activityDefinitionMapper.selectById结果先赋值再判空,避免NPE
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:16:01 +08:00
刘备
f581f72693
Fix Bug #468 : [住院医生工作站-检验申请] 列表页缺失【单据状态】列,无法闭环管理检验医嘱执行进度
...
前后端完整链路修复:
- 后端 Mapper: LEFT JOIN wor_service_request 表,通过 CASE MIN(status_enum) 映射单据状态
- 后端 Mapper: 新增状态筛选和关键字搜索(申请单号/检验项目模糊匹配)
- 后端 Service/Controller: 新增 status 和 keyword 参数传递
- 前端 Vue: 列表页添加【单据状态】列,绑定 status 字段
- 前端 Vue: 移除中间状态选项(已采集/已收样),与后端 CASE 映射保持一致
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:16:01 +08:00
荀彧
0c36230158
Fix Bug #457 : 门诊收费:已签发的手术类医嘱在门诊收费列表中不显示项目名称
...
根因分析:门诊医生站处方列表查询(DoctorStationAdviceAppMapper.xml)中,
手术类医嘱(category_enum=4)的 advice_table_name 固定返回 'wor_activity_definition',
而非 'cli_surgery'。当医生通过"签发"按钮处理手术医嘱时,handService() 据此创建
ChargeItem,导致 product_table = 'wor_activity_definition',但 product_id 实际指向
cli_surgery 表中的手术记录。
门诊收费SQL查询的CASE语句仅匹配 product_table = 'cli_surgery' 的手术项,
因此这些手术医嘱无法匹配,item_name 返回 NULL。
修复方案:在 selectEncounterPatientPrescription 和 selectEncounterPatientPrescriptionWithPrice
的 item_name CASE 表达式中新增兜底分支:
WHEN context_enum = #{activity} AND service_table = 'wor_service_request'
THEN COALESCE(T9.surgery_name, wsr.content_json->>'surgeryName',
wsr.content_json->>'adviceName', T2."name")
按优先级回退获取手术名称:cli_surgery表 → content_json手术名称 → content_json医嘱名称 → 诊疗定义名称
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:15:52 +08:00
华佗
1f94efa1d2
Fix Bug #442 : 手术计费:点击"删除"待签发耗材时异常报错,导致操作失败
...
根因:DoctorStationAdviceAppMapper.xml 中 getRequestBaseInfo SQL 的第二个 UNION 查询(手术计费耗材从 adm_charge_item 关联 wor_device_request)中,biz_request_flag 和 requester_id 使用了 CI.enterer_id(计费录入人),而非 DR.requester_id(设备申请创建人)。当录入人与当前操作人不一致时,biz_request_flag 为 '0',导致删除操作被后端拒绝。
修复:将 CI.enterer_id 改为 COALESCE(DR.requester_id, CI.enterer_id),优先使用 DeviceRequest 的 requester_id,确保 biz_request_flag 基于正确的创建人计算。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:15:52 +08:00
Ranyunqiao
6fdf96edab
413 460 513 514
2026-05-13 00:15:52 +08:00
赵云
2ef1ce9f35
Fix Bug #470 : 住院医生工作站-手术申请单加载手术项目耗时过长,影响医生开单效率
...
根因:getAdviceBaseInfo 后端接口在查询手术项目时,仍会执行与手术无关的库存查询
(getAdviceInventory)、全表扫描待发放记录(getAdviceDraftInventory)以及药房科室
配置查询(getMedLocationConfig),其中 getAdviceDraftInventory 对
med_medication_dispense 和 wor_device_dispense 做全表扫描,无任何过滤条件,
导致手术/诊疗场景下的额外数据库开销。
修复:在 DoctorStationAdviceAppServiceImpl.getAdviceBaseInfo() 中增加类型判断,
当 adviceTypes 不包含药品(1)或耗材(2)时跳过所有库存相关查询,因为这些查询对手术/
诊疗(3,6)项目无意义,且下游代码仅在药品/耗材处理分支中使用这些变量。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:15:51 +08:00
Ranyunqiao
4c4f01abd1
429 433 438 476 477 478
2026-05-13 00:15:51 +08:00
刘备
5539d4cc03
Fix Bug #489 : 【医嘱闭环】医生站签发单条长期药品医嘱,护士校对界面生成重复(两条)待校对记录
...
在住院医生站签发流程的 handMedication() 方法中增加去重逻辑,
与门诊医生站保持一致,使用 patientId+encounterId+adviceDefinitionId+dose+methodCode+rateCode
作为唯一键,防止前端重复提交导致数据库产生重复医嘱记录。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:13:32 +08:00
刘备
982e905990
Fix Bug #491 : 【执行科室配置】保存配置时系统报错 - 修复Organization.getName()空指针异常
...
根因分析:
1. organizationLocationInit() 中 Organization.getName() 未做空值过滤,若数据库存在name为null的科室记录会NPE
2. addOrEditOrgLoc() 中 activityDefinitionMapper.selectById().getName() 未对selectById返回null做防护
3. addOrEditOrgLoc() 缺少organizationId前置校验,空值传入可能导致后续流程异常
修复内容:
- 第74行:stream中增加 .filter(organization -> organization != null && organization.getName() != null)
- 第136-138行:增加organizationId为null时的校验,返回友好错误提示
- 第145-147行:将activityDefinitionMapper.selectById结果先赋值再判空,避免NPE
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:12:42 +08:00
刘备
0600bbecbc
Fix Bug #468 : [住院医生工作站-检验申请] 列表页缺失【单据状态】列,无法闭环管理检验医嘱执行进度
...
前后端完整链路修复:
- 后端 Mapper: LEFT JOIN wor_service_request 表,通过 CASE MIN(status_enum) 映射单据状态
- 后端 Mapper: 新增状态筛选和关键字搜索(申请单号/检验项目模糊匹配)
- 后端 Service/Controller: 新增 status 和 keyword 参数传递
- 前端 Vue: 列表页添加【单据状态】列,绑定 status 字段
- 前端 Vue: 移除中间状态选项(已采集/已收样),与后端 CASE 映射保持一致
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 00:02:47 +08:00
荀彧
d38efd15b3
Fix Bug #457 : 门诊收费:已签发的手术类医嘱在门诊收费列表中不显示项目名称
...
根因分析:门诊医生站处方列表查询(DoctorStationAdviceAppMapper.xml)中,
手术类医嘱(category_enum=4)的 advice_table_name 固定返回 'wor_activity_definition',
而非 'cli_surgery'。当医生通过"签发"按钮处理手术医嘱时,handService() 据此创建
ChargeItem,导致 product_table = 'wor_activity_definition',但 product_id 实际指向
cli_surgery 表中的手术记录。
门诊收费SQL查询的CASE语句仅匹配 product_table = 'cli_surgery' 的手术项,
因此这些手术医嘱无法匹配,item_name 返回 NULL。
修复方案:在 selectEncounterPatientPrescription 和 selectEncounterPatientPrescriptionWithPrice
的 item_name CASE 表达式中新增兜底分支:
WHEN context_enum = #{activity} AND service_table = 'wor_service_request'
THEN COALESCE(T9.surgery_name, wsr.content_json->>'surgeryName',
wsr.content_json->>'adviceName', T2."name")
按优先级回退获取手术名称:cli_surgery表 → content_json手术名称 → content_json医嘱名称 → 诊疗定义名称
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 23:34:36 +08:00
华佗
4e71b861ab
Fix Bug #442 : 手术计费:点击"删除"待签发耗材时异常报错,导致操作失败
...
根因:DoctorStationAdviceAppMapper.xml 中 getRequestBaseInfo SQL 的第二个 UNION 查询(手术计费耗材从 adm_charge_item 关联 wor_device_request)中,biz_request_flag 和 requester_id 使用了 CI.enterer_id(计费录入人),而非 DR.requester_id(设备申请创建人)。当录入人与当前操作人不一致时,biz_request_flag 为 '0',导致删除操作被后端拒绝。
修复:将 CI.enterer_id 改为 COALESCE(DR.requester_id, CI.enterer_id),优先使用 DeviceRequest 的 requester_id,确保 biz_request_flag 基于正确的创建人计算。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 23:08:08 +08:00
Ranyunqiao
460890e3c2
413 460 513 514
2026-05-12 17:27:25 +08:00
赵云
fbbe0e9248
Fix Bug #470 : 住院医生工作站-手术申请单加载手术项目耗时过长,影响医生开单效率
...
根因:getAdviceBaseInfo 后端接口在查询手术项目时,仍会执行与手术无关的库存查询
(getAdviceInventory)、全表扫描待发放记录(getAdviceDraftInventory)以及药房科室
配置查询(getMedLocationConfig),其中 getAdviceDraftInventory 对
med_medication_dispense 和 wor_device_dispense 做全表扫描,无任何过滤条件,
导致手术/诊疗场景下的额外数据库开销。
修复:在 DoctorStationAdviceAppServiceImpl.getAdviceBaseInfo() 中增加类型判断,
当 adviceTypes 不包含药品(1)或耗材(2)时跳过所有库存相关查询,因为这些查询对手术/
诊疗(3,6)项目无意义,且下游代码仅在药品/耗材处理分支中使用这些变量。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 17:22:23 +08:00
Ranyunqiao
1b159cdfab
429 433 438 476 477 478
2026-05-12 12:21:25 +08:00
赵云
e1de467b68
fix: 修复 Bug #441 — 护士角色无权访问卫生机构列表
...
将租户Controller中4个只读端点的权限从 system:tenant:operate 降级为 system:tenant:list:
- getTenantPage (下拉列表数据源)
- getTenantDetail
- getTenantUserPage
- getUnbindTenantUserList
增删改操作保持 system:tenant:operate 不变。
同步更新 sys_menu 表:menu_id=2048 perms='system:tenant:list'
Root cause: 护士角色进入门诊手术安排页时 onMounted 调用 /system/tenant/page,该接口要求 system:tenant:operate 权限,护士角色无此权限导致卫生机构下拉列表为空,后续所有查询均失败。
2026-05-12 12:18:58 +08:00
53a3460092
调优:测试环境数据库改为 test1
2026-05-12 12:18:58 +08:00
赵云
d7f8a20d76
Fix Bug #435 : 门诊手术安排:编辑弹窗中"费用类别"字段数据未回显
...
根因:getSurgeryScheduleDetail 查询未关联 fin_contract 表,导致 feeType 始终为 null
修复:SQL 中添加 adm_encounter → adm_account → fin_contract 三表关联,取 fc.contract_name AS feeType;
OpScheduleDto 新增 feeType 字段用于接收映射
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 12:18:58 +08:00
赵云
656079b27b
fix: 修复 Bug #441 — 护士角色无权访问卫生机构列表
...
将租户Controller中4个只读端点的权限从 system:tenant:operate 降级为 system:tenant:list:
- getTenantPage (下拉列表数据源)
- getTenantDetail
- getTenantUserPage
- getUnbindTenantUserList
增删改操作保持 system:tenant:operate 不变。
同步更新 sys_menu 表:menu_id=2048 perms='system:tenant:list'
Root cause: 护士角色进入门诊手术安排页时 onMounted 调用 /system/tenant/page,该接口要求 system:tenant:operate 权限,护士角色无此权限导致卫生机构下拉列表为空,后续所有查询均失败。
2026-05-12 11:10:43 +08:00
ede6180c97
调优:测试环境数据库改为 test1
2026-05-12 11:01:28 +08:00
赵云
3f35b4f2bb
Fix Bug #435 : 门诊手术安排:编辑弹窗中"费用类别"字段数据未回显
...
根因:getSurgeryScheduleDetail 查询未关联 fin_contract 表,导致 feeType 始终为 null
修复:SQL 中添加 adm_encounter → adm_account → fin_contract 三表关联,取 fc.contract_name AS feeType;
OpScheduleDto 新增 feeType 字段用于接收映射
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-12 10:04:26 +08:00
关羽
dafa5961c4
Fix Bug #489 : 护士校对界面重复待校对记录 - SQL JOIN 乘法修复
...
根因: AdviceProcessAppMapper.xml 中 LEFT JOIN med_medication_dispense
直接关联时,一条药品医嘱若有多条发药记录会产生多行结果(SQL 笛卡尔积),
导致护士校对界面显示重复的待校对记录。
修复: 将直接 JOIN 改为 ROW_NUMBER() 子查询,每个 med_req_id 只取最新
一条发药记录的状态,避免行倍增。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-11 15:30:17 +08:00
赵云
c7956a116b
fix: 恢复 Bug #497 的后端修改 + 数据库字段同步 (ALTER TABLE doc_request_form ADD COLUMN status)
2026-05-11 15:30:17 +08:00
关羽
845354e863
fix: 还原 Bug #443/#475/#477/#486/#497 引入的 getRequestForm 编译错误
2026-05-11 15:30:17 +08:00
赵云
56ea4b6af1
fix: 完整回退 Bug #497 的后端修改(SQL/Java接口/Impl/Dto)
2026-05-11 15:30:17 +08:00
赵云
a43f98cc5a
fix: 完全回退 Bug #497 引入的 drf.status 字段(数据库不存在)
2026-05-11 15:30:17 +08:00
wangjian963
9215c288d3
506 门诊挂号:门诊诊前退号后,数据库多表状态值变更与 PRD 定义不符
...
CommonConstants.AppointmentOrderStatus 常量 → OrderStatus 枚举重构
新增枚举:0=患者取消 / 1=有效 / 2=系统取消 / 3=已完成
退号流程加乐观锁防并发,slot 状态改回待约,退号日志独立事务 修复 XML 中 Integer 比较用字符串的问题
Bug #411 — 诊室过滤栏从科室下拉框改为诊室按钮组
2026-05-11 15:30:17 +08:00
wangjian963
9bd39c06e7
Merge remote-tracking branch 'origin/develop' into develop
2026-05-11 15:25:17 +08:00
赵云
bde42d6b14
fix: 恢复 Bug #497 的后端修改 + 数据库字段同步 (ALTER TABLE doc_request_form ADD COLUMN status)
2026-05-11 14:57:06 +08:00
关羽
01bf3177c9
fix: 还原 Bug #443/#475/#477/#486/#497 引入的 getRequestForm 编译错误
2026-05-11 14:40:07 +08:00
赵云
2a9f8376e6
fix: 完整回退 Bug #497 的后端修改(SQL/Java接口/Impl/Dto)
2026-05-11 14:13:49 +08:00
关羽
c3dfd3eb21
Fix Bug #499 : 【住院医生工作站-检查申请】检查申请列表缺失查询过滤功能,不符合临床高效检索要求
...
补充修复:
1. 后端 get-inspection 接口新增 keyword 关键字参数(检验申请关键字搜索)
2. 新增 deleteRequestForm 接口(仅待签发状态可删除)
3. 新增 withdrawRequestForm 接口(已签发状态撤回至待签发)
4. RequestForm 实体新增 status 字段(用于撤回方法状态校验)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-11 14:07:50 +08:00
赵云
bbc740b6ce
fix: 完全回退 Bug #497 引入的 drf.status 字段(数据库不存在)
2026-05-11 14:06:53 +08:00
关羽
256b986c0e
Fix Bug #477 : 住院医生工作站-住院检查申请详情弹窗中"发往科室"字段显示为短横线(-),未正常获取数据
...
根因:handleViewDetail 为同步方法,点击详情时 getLocationInfo 尚未返回,
orgOptions 为空导致 recursionFun 无法将 targetDepartment ID 解析为科室名称。
修复:
1. 前端(4个申请组件):handleViewDetail 改为 async,解析 descJson 前确保 orgOptions 已加载
2. 前端:watch encounterId 改为 Promise.all 并行加载数据和科室列表
3. 后端:新增 keyword 关键字筛选参数(申请单号/检查项目模糊匹配)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-11 14:03:49 +08:00
关羽
8093f8acda
Fix Bug #477 : 住院医生工作站-住院检查申请详情弹窗中"发往科室"字段显示为短横线(-),未正常获取数据
...
根因:handleViewDetail 为同步方法,点击详情时 getLocationInfo 尚未返回,
orgOptions 为空导致 recursionFun 无法将 targetDepartment ID 解析为科室名称。
修复:
1. 前端(4个申请组件):handleViewDetail 改为 async,解析 descJson 前确保 orgOptions 已加载
2. 前端:watch encounterId 改为 Promise.all 并行加载数据和科室列表
3. 后端:新增 keyword 关键字筛选参数(申请单号/检查项目模糊匹配)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-11 14:03:40 +08:00
关羽
eaac16769d
Fix Bug #491 : 【执行科室配置】保存配置时系统报错
...
根因: addOrEditOrgLoc 方法中 organizationService.getById() 返回 null 时
直接调用 .getName() 导致 NullPointerException。当数据库中某条执行科室配置
关联的 organizationId 对应的科室记录已被删除时触发此问题。
修复: 在调用 getName() 前增加 null 检查,返回"未知科室"作为降级提示。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-11 14:01:23 +08:00
关羽
8fae6fe3d5
Fix Bug #491 : 【执行科室配置】保存配置时系统报错
...
根因: addOrEditOrgLoc 方法中 organizationService.getById() 返回 null 时
直接调用 .getName() 导致 NullPointerException。当数据库中某条执行科室配置
关联的 organizationId 对应的科室记录已被删除时触发此问题。
修复: 在调用 getName() 前增加 null 检查,返回"未知科室"作为降级提示。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-11 14:01:15 +08:00
wangjian963
df6c5f3824
506 门诊挂号:门诊诊前退号后,数据库多表状态值变更与 PRD 定义不符
...
CommonConstants.AppointmentOrderStatus 常量 → OrderStatus 枚举重构
新增枚举:0=患者取消 / 1=有效 / 2=系统取消 / 3=已完成
退号流程加乐观锁防并发,slot 状态改回待约,退号日志独立事务 修复 XML 中 Integer 比较用字符串的问题
Bug #411 — 诊室过滤栏从科室下拉框改为诊室按钮组
2026-05-11 13:51:47 +08:00
赵云
c5820fcec2
Fix Bug #497 : 【住院医生工作站-检查申请】检查申请列表缺失"申请单状态"列及全流程闭环状态流转逻辑
...
根因:get-check 接口只接收 encounterId 参数,忽略前端传递的 startDate/endDate/status 筛选参数,
导致日期筛选和状态筛选全部失效。同类型的 get-inspection 接口已正确支持这些参数。
修复:在 controller 的 get-check 方法增加 startDate、endDate、status 三个 @RequestParam,
调用 5 参数重载的 service 方法,使筛选参数正确传递到 SQL 层。
前端 examineApplication.vue 已包含状态列、parseStatus 映射、状态筛选下拉框,无需修改。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-11 13:48:45 +08:00
赵云
98e5a0b984
Fix Bug #509 : [门诊医生站-手术申请] 提交申请后列表未实时刷新展示数据,且提示语需优化
...
1. 修复列表不显示问题:SurgeryMapper.xml 中 sr.id IS NULL 条件导致已生成医嘱的手术被过滤,
提交手术时 addSurgery() 会创建 category_enum=4 的 ServiceRequest,导致查询立即被排除。
移除 sr.id IS NULL 过滤条件,使手术申请列表正常展示所有手术记录。
2. 修复提示语问题:将后端 addSurgery 返回消息从"手术信息添加成功"改为"手术申请提交成功!",
updateSurgery 改为"手术申请修改成功!",前端直接使用后端返回消息。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-11 11:24:06 +08:00
关羽
13731c2373
Fix Bug #475 : 【住院医生工作站】开立检查申请单报错"请先配置当前时间段的执行科室"后,系统仍生成申请记录
...
将执行科室配置校验提前到数据库写入操作之前,避免校验失败时已写入RequestForm记录
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-11 00:24:08 +08:00
关羽
d63b00fd33
Fix Bug #481 : [住院护士站-医嘱执行] 药品"注射用头孢哌酮钠舒巴坦钠"库存充足,但执行医嘱时提示库存不足
...
在 checkExeMedInventory 方法中,原代码使用 findFirst() 只取第一个批次的库存
进行校验,导致同一库房多个批次的库存总量未被聚合计算。改为 collect(Collectors.toList())
收集所有匹配批次,然后用 Stream reduce 聚合总可用库存后再与需求量比较。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-11 00:22:42 +08:00
关羽
d866d898df
Fix Bug #506 : 门诊挂号:门诊诊前退号后,数据库多表状态值变更与 PRD 定义不符
...
在 syncAppointmentReturnStatus 方法中:
1. 退号时同步将 order_main.pay_status 设为 0(未支付),修复退费后 pay_status 仍为 1 的问题
2. cancel_reason 固定使用标准化值"门诊退号",确保与 PRD 定义一致
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-10 23:58:40 +08:00
关羽
e0a035204e
Fix Bug #487 : 【临床医嘱】诊疗类医嘱签发后,列表状态未实时刷新为"已签发"
...
诊疗类医嘱(handService)签发时仅依赖saveOrUpdate更新statusEnum,
但该方式对已有记录可能未正确将statusEnum更新为ACTIVE(2)。
修复:在handService方法末尾使用LambdaUpdateWrapper批量显式更新
所有已处理ServiceRequest的statusEnum为ACTIVE(签发)/DRAFT(保存),
与ServiceRequestServiceImpl中activeStatusEnum/updateDraftStatusBatch
等方法的实现模式保持一致。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-10 17:20:43 +08:00
关羽
772ec5537c
Fix Bug #504 : 【住院医生工作站-临床医嘱】护士退回药品医嘱后,医生修改并保存时提示"未匹配到库存信息"
...
根因分析:
1. SQL查询 getRegRequestBaseInfo 未返回 medication_id/adviceDefinitionId 字段,
退回医嘱的 adviceDefinitionId 为 null,导致库存校验查询无法匹配到库存记录
2. 退回医嘱可能缺少 locationId,严格的 locationId 匹配导致校验失败
修复方案:
1. AdviceManageAppMapper.xml:在三个UNION查询中分别添加 medication_id/device_def_id/activity_id AS advice_definition_id
2. AdviceUtils.checkInventory():
- 过滤 null adviceDefinitionId,避免SQL查询异常
- 所有adviceDefinitionId为null时跳过库存校验
- 退回医嘱单个adviceDefinitionId为null时跳过该校验项
- 添加 locationId 容错匹配(为null时跳过location匹配)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-10 12:28:19 +08:00