ce1161caea
Fix Bug #517 : [库房管理-领用管理] 业务逻辑校验缺失:允许保存并提交领用数量大于库存数量(零库存领用)的单据
...
根因分析:
- 前端 handleSubmitApproval(提交审批)未做库存校验,直接调用后端 API
- 后端 submitApproval 也未做库存校验,仅在保存时(addOrEditIssueReceipt)有 validateRequisitionStock
- 用户可绕过前端保存校验(如编辑已有草稿后直接提交审批),将超库存单据提交审批流
修复方案:
1. 后端:在 submitApproval 方法中增加 validateRequisitionStockByBusNo,通过单据详情查询已保存明细,逐行校验领用数量是否超过源仓库库存
2. 前端:在 handleSubmitApproval 提交前逐行调用 validateRequisitionQtyVsStock 校验库存,超库存时拦截并提示
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-17 21:31:42 +08:00
046a3e4703
Fix Bug #514 : [库房管理-调拨管理-调拨] 调拨单保存与提交校验缺失 - 前端增加数量>0和库存校验,后端批量保存接口补充@Validated注解
...
根因:批量调拨页面handleSave仅校验单价未校验数量,submitApproval未校验数据完整性即提交审批;后端批量保存接口缺少@Validated导致DTO层@Min(1)未生效
修复:
1. batchTransfer/index.vue handleSave() 增加调拨数量>0和不超过源库存的前端校验
2. batchTransfer/index.vue handleSubmitApproval() 增加数量>0校验后再提交审批
3. ProductTransferController.java 批量保存接口添加@Validated注解启用DTO校验
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-17 21:19:12 +08:00
8bfe4f2c23
Fix Bug #524 : 报卡详情日期字段回显为空 - 添加@JsonFormat注解确保Jackson正确序列化日期
...
根因:InfectiousCardDto和DoctorCardListDto中的LocalDate/LocalDateTime字段缺少@JsonFormat注解,
Jackson默认将日期序列化为数组格式[2026,5,15],前端normalizeDate函数无法解析导致字段显示为空。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-17 21:09:02 +08:00
2d43b1cddc
Fix Bug #504 : 护士退回药品医嘱后医生修改保存时"未匹配到库存信息" - 增加两阶段库存匹配逻辑和空值保护
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-17 20:24:42 +08:00
eee65a4517
Fix Bug #470 : 手术项目查询去除MyBatis Plus COUNT开销,改用直接LIMIT查询
...
根因:MyBatis Plus分页拦截器在执行手术项目查询时,先做COUNT全表扫描
(10,102条记录,~4ms)再查数据(~0.3ms)。前端el-transfer不需要精确total,
COUNT查询纯属多余开销。
修复:Mapper返回值改为List,XML添加LIMIT/OFFSET,Service手动构造Page。
数据库层面从~5ms降至~0.3ms。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-17 19:23:24 +08:00
关羽
7af922684a
Fix Bug #470 : 住院医生工作站-手术申请单加载手术项目添加Redis缓存+修复loading状态
...
根因:getSurgeryPage接口缺少Redis缓存层,每次弹窗打开都直接查数据库。
修复:1. 后端getSurgeryPage添加Redis缓存(24h过期),与getAdviceBaseInfo保持一致
2. 前端getList()命中内存缓存时显式清除loading状态,防止加载动画卡住
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 14:18:55 +08:00
关羽
be334f8f53
Fix Bug #461 : [系统管理-执行科室配置] 保存项目配置后,项目名称回显为ID码,未显示正确名称
...
**后端开发重点**:优先搜索 Java/Spring 后端代码。
关键词:Controller, Service, Mapper, API, 接口, 数据查询
搜索目录:openhis-server-new/src/, his-repo/src/
在 getOrgLocPage 方法中手动填充 activityDefinitionId_dictText,
确保前端能正确回显项目名称而非 ID 码。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 14:16:27 +08:00
关羽
a7ea08f075
Fix Bug #432 : 门诊手术安排:新增手术安排保存时报错 - 根因+修复方案
...
根因:OpCreateScheduleDto缺少@JsonIgnoreProperties注解,Jackson默认
FAIL_ON_UNKNOWN_PROPERTIES=true,前端提交的表单包含DTO中不存在的字段
(identifierNo、patientName、gender、age、birthDay等)导致反序列化失败
修复:在OpCreateScheduleDto类上添加@JsonIgnoreProperties(ignoreUnknown = true)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 12:20:06 +08:00
关羽
d2cb02eeef
Fix Bug #401 : 门诊完诊审计日志错误:div_log 表中 pool_id 与 slot_id 存值与设计规范不符
...
根因:queueWasAlreadyCompleted 条件限制导致队列已由分诊台完诊时,
医生站完诊不写 div_log 审计日志,造成审计记录缺失。
数据库12条COMPLETE记录中6条pool_id/slot_id为NULL(50%)。
修复:移除 queueWasAlreadyCompleted 条件限制,确保每次完诊操作
都生成审计日志;保留 queueWasAlreadyCompleted 日志用于排查。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-16 12:11:01 +08:00
51ae3aad29
bug524 [门诊/医生个人报卡管理] 传染病报告卡保存后数据回显失败:病例分类、日期及分型字段为空
2026-05-15 18:16:12 +08:00
wangjian963
b9aabd53ce
Fix Bug 505505 【业务逻辑缺陷】药品医嘱已由药房发药,护士仍能在“医嘱校对”模块执行“退回”操作
...
[门诊手术安排]“手术申请查询”弹窗底部,分页组件与界底部元素重叠,影响操作。
2026-05-15 17:34:29 +08:00
荀彧
0930fbae93
Fix Bug #535 : 【住院护士站-医嘱校对】已校验过的医嘱错误显示于"未校对"列表中,导致数据状态联动失效
...
根因:后端 getInpatientAdvicePage 方法中将 requestStatus 置为 null,
未按前端 tab 传入的状态值过滤,导致无论切换哪个 tab 都返回全部医嘱。
SQL 中的 CASE 条件仅处理 DRAFT 状态的 performer_check_id 校验,
并未按 request_status 字段过滤。
修复:保存 requestStatus 后,在查询结果集上按 requestStatus 手动过滤,
与 exeStatus 的过滤方式保持一致。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-15 16:26:17 +08:00
关羽
cace025d14
Fix Bug #533 : 【门诊手术安排-计费】添加药品费用项目保存提示成功,但列表页未同步显示计费药品项目
...
根因:DoctorStationAdviceAppServiceImpl 中 handMedication/handDevice/handService 方法
硬编码 generateSourceEnum=1(医生开立),但前端手术计费传入 generateSourceEnum=6,
查询时按 6 过滤导致找不到记录。
修复:1. GenerateSource 枚举新增 SURGERY_BILLING(6)
2. 8处 setGenerateSourceEnum 改为优先使用 DTO 的 generateSourceEnum,
空时回退到 DOCTOR_PRESCRIPTION
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-15 16:09:29 +08:00
Ranyunqiao
e65f12125b
403 住院医生工作站:应用医嘱组套后,药品明细字段内容丢失未正确引入表格 521 [住院医生站-临床医嘱-检查申请] 手工选择执行科室后,保存仍提示“未找到项目执行的科室” 528 [住院医生工作站-检查申请] 修改申请单成功后,弹窗未自动关闭且列表数据未自动刷新 531 [住院医生站-临床医嘱-检查] 检查申请单打开数据没有正常加载
2026-05-15 14:20:30 +08:00
Ranyunqiao
12d0733c0c
Merge remote-tracking branch 'origin/develop' into develop
2026-05-15 09:44:38 +08:00
Ranyunqiao
610fff704a
bug 470 494
2026-05-15 09:44:26 +08:00
wangjian963
0aa7dd9b82
Revert "Merge remote-tracking branch 'origin/develop' into develop"
...
This reverts commit 5946c1ea4b , reversing
changes made to 8d905c9844 .
2026-05-15 09:33:35 +08:00
wangjian963
5946c1ea4b
Merge remote-tracking branch 'origin/develop' into develop
2026-05-15 09:26:51 +08:00
wangjian963
8d905c9844
Reapply "Fix Bug #489-regression: [住院护士站-医嘱处理] UNION加SELECT DISTINCT后NULL列类型推断失败导致接口异常"
...
This reverts commit 49fc905316 .
2026-05-15 09:23:13 +08:00
wangjian963
49fc905316
Revert "Fix Bug #489-regression: [住院护士站-医嘱处理] UNION加SELECT DISTINCT后NULL列类型推断失败导致接口异常"
...
This reverts commit 4e7e79d9c0 .
2026-05-15 09:19:02 +08:00
关羽
4138dc39f6
Fix Bug #495 : 【医嘱闭环】已校对医嘱无法流转至"医嘱执行"界面,导致费用无法提交执行
...
后端SQL查询未过滤requestStatus(医嘱请求状态),导致医嘱执行页面的"待执行"tab
返回所有状态医嘱而非仅返回已校对(status=3)的医嘱。修复方式:
1. AdviceProcessAppMapper.java: 新增requestStatus参数
2. AdviceProcessAppMapper.xml: 在med_medication_request和wor_service_request子查询的
WHERE条件中增加 AND T1.status_enum = #{requestStatus} 过滤
3. AdviceProcessAppServiceImpl.java: 保存requestStatus并传递给mapper,
替代原注释"后端SQL已通过CASE条件处理"的错误假设
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-15 00:21:55 +08:00
关羽
1124b1010d
Fix Bug #480 : [住院护士站-医嘱执行] 非耗材类医嘱执行报"耗材库存"错误且全选逻辑联动异常
...
根因分析:
1. 耗材库存报错:lotNumberMatch() 按 encounterId 查询 ALL 待发放 DeviceDispense,
不区分是否为本次执行的医嘱。若该就诊存在其他未执行的耗材记录且库存为零,
整个调用就会失败,导致非耗材类医嘱执行也被拦截。
2. 全选联动异常:toggleRowSelection() 程序化选中会触发 @select 事件,
handleRowSelect 中调用 selectAllCheckboxesInRow 导致级联全选。
修复方案:
- 后端:lotNumberMatch 新增 requestIdList 可选参数,当传入时通过 DeviceRequest.basedOnId
过滤仅校验与本次执行医嘱关联的耗材记录,避免其他未执行医嘱干扰
- 前端:handleExecute 传入 selectedRequestIds(仅诊疗类医嘱的 requestId)
- 前端:新增 skipSelectCascade 标志,程序化 toggleRowSelection 时阻止 handleRowSelect
触发 selectAllCheckboxesInRow,消除级联反馈环
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 22:22:01 +08:00
关羽
1dbf7859ea
Fix Bug #475 : 【住院医生工作站】开立检查申请单报错"请先配置当前时间段的执行科室"后,系统仍生成申请记录
...
合并验证逻辑:移除独立的"配置列表是否为空"检查,改为在遍历 activityList
时统一验证每个项目的执行科室配置。所有验证在任何数据库操作之前完成,
确保验证失败时不会产生脏数据。同时增加 activityList 为空时的明确提示。
2026-05-14 22:09:06 +08:00
荀彧
270475adb9
Fix Bug #444 : 门诊手术医嘱界面"已引用计费药品"列表未正常显示药品名称
...
根因分析:
1. 前端 handleMedicalAdvice 调用 getPrescriptionList 时只传 encounterId,
未传 generateSourceEnum=6 和 sourceBillNo(手术单号),
后端默认查询 generateSourceEnum=1(医生开立),漏掉了手术计费创建的药品记录
2. 后端 getRequestBaseInfo 在 sourceBillNo 存在时会过滤掉药品(adviceType=1),
进一步阻断了手术计费药品的返回
修复方案:
- 前端:handleMedicalAdvice 传参 (visitId, 6, operCode) 匹配手术计费记录
- 后端:移除手术计费场景的药品过滤,前端各组件已按 adviceType 自行过滤
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 20:10:17 +08:00
关羽
e6c0d03dc1
Fix Bug #443 : 手术计费:点击"签发"耗材时异常报错
...
根因:签发耗材时 handDevice 方法会重复调用 saveOrUpdate 更新已有的 DeviceRequest 记录,
仅设置了部分字段(可能为 null),导致关键字段 performLocation(发放库房)被覆盖为空。
随后 handleDeviceDispense 创建 DeviceDispense 时 locationId 为 null,触发报错。
修复:签发操作(SIGN_ADVICE)跳过 handDevice 处理。因为耗材请求在保存时已创建完成,
签发只需更新状态(下方批量更新逻辑已处理),无需重新走 insert/update 流程。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 18:15:50 +08:00
赵云
5f7b75667a
Fix Bug #402 : 住院医生站诊断录入:点击保存诊断后,列表出现重复记录且部分条目元数据缺失
...
根因:后端 saveDoctorDiagnosis 先删除所有 tcm_flag=0 的记录,再用旧 encounterDiagnosisId
调用 saveOrUpdate,由于记录已删除,UPDATE 失败后 fallback 到 INSERT 导致重复记录。
修复:
1. 后端:不再设置 encounterDiagnosisId,确保 saveOrUpdate 始终执行 INSERT
2. 前端:getList() 后对诊断列表按 ybNo/name 去重,防止重复显示
3. 前端:保存前补全 diagnosisDoctor 和 diagnosisTime 元数据
4. 前端:修复 getTcmDiagnosis 的空值安全访问(res.data?.illness?.length)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 18:13:37 +08:00
wangjian963
4e7e79d9c0
Fix Bug #489-regression: [住院护士站-医嘱处理] UNION加SELECT DISTINCT后NULL列类型推断失败导致接口异常
...
Root cause: Bug #489修复为UNION添加SELECT DISTINCT后,PostgreSQL无法将
服务侧无类型NULL文字自动匹配药品侧对应列的类型,报错"UNION types integer
and text cannot be matched"(错误位置: skin_test_flag列,第9列)。
Fix:
- InpatientAdviceDto.categoryCode: Integer → String,与DB varchar对齐
- AdviceProcessAppMapper.xml: 服务侧UNION 13处NULL添加PostgreSQL显式类型
强转(::integer / ::bigint / ::numeric / ::varchar),同时part_percent
的'1'改为'1::numeric'以安全匹配药品侧numeric类型
2026-05-14 17:53:31 +08:00
关羽
560813d009
Fix Bug #412 : 门诊医生站:传染病报告卡保存失败,提示报错
...
BeanUtils.copyProperties 不支持 DTO 中 LocalDate/LocalDateTime 到实体中 java.util.Date 的类型转换,导致 onsetDate、diagDate、reportDate、deathDate 等日期字段在拷贝后为 null。新增手动类型转换逻辑确保日期字段正确保存。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 17:16:39 +08:00
关羽
e21122edf0
Fix Bug #516 : [住院医生站-临床医嘱-检验申请] 检验申请单手动填写的"发往科室"与生成的医嘱执行科室不一致
...
根因:后端 RequestFormManageAppServiceImpl.saveRequestForm() 完全忽略了前端传入的 positionId(用户手动选择的发往科室),
始终从 activityOrganizationConfig 配置表中查询执行科室,导致用户手动选择的科室被默认配置覆盖。
修复:在收集执行科室时优先使用 activitySaveDto.getPositionId()(前端传入的用户选择),
仅在前端未传入时 fallback 到配置表中的执行科室。
**后端开发重点**:优先搜索 Java/Spring 后端代码。
关键词:Controller, Service, Mapper, API, 接口, 数据查询
搜索目录:openhis-server-new/src/, his-repo/src/
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 16:30:13 +08:00
关羽
e9576ddfa8
Fix Bug #517 : [库房管理-领用管理] 业务逻辑校验缺失:允许保存并提交领用数量大于库存数量(零库存领用)的单据
...
在 RequisitionIssueAppServiceImpl.addOrEditIssueReceipt() 中新增库存校验逻辑,
批量保存时校验领用数量是否超过源仓库实际库存,不足时抛出 ServiceException 阻断保存。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 16:26:35 +08:00
关羽
b435de9e7b
Fix Bug #519 : [门诊医生站-诊断-报卡] 已完成传染病报卡的诊断在再次点保存时重复弹出报卡界面
...
根因:handleInfectiousDiseaseReport() 仅根据诊断名称匹配传染病,未校验该诊断是否已有已提交的报卡记录。
修复方案:
1. 后端 DiagnosisQueryDto 新增 hasInfectiousReport 字段
2. getEncounterDiagnosis SQL 通过 EXISTS 子查询关联 infectious_card 表,
判断是否存在 status >= 1(已提交/已审核/已上报)的报卡记录
3. 前端 handleInfectiousDiseaseReport() 过滤掉 hasInfectiousReport === 1 的诊断,不再弹出报卡
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 16:16:46 +08:00
关羽
0bd1277307
Fix Bug #495 : 【医嘱闭环】已校对医嘱无法流转至"医嘱执行"界面,导致费用无法提交执行
...
Root cause: In getInpatientAdvicePage(), encounterIds and exeStatus were nullified
before buildQueryWrapper to prevent auto-generated SQL conditions, but requestStatus
was NOT nullified. HisQueryUtils.buildQueryWrapper uses reflection to add eq conditions
for ALL non-null fields, so requestStatus: 3 became an extra SQL filter
"AND request_status = 3" that was not intended for the 医嘱执行 page.
The 医嘱执行 page uses exeStatus (not requestStatus) for execution state filtering.
The SQL already handles verified/unverified order filtering via a CASE condition
on status_enum and performer_check_id. The requestStatus parameter is only meant
for frontend tab selection and should not be used as a SQL filter here.
Fix: Nullify requestStatus before buildQueryWrapper, same as encounterIds/exeStatus.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 14:14:56 +08:00
wangjian963
79cce458ee
Merge remote-tracking branch 'origin/develop' into develop
...
# Conflicts:
# openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/dto/OpScheduleDto.java
2026-05-14 12:01:33 +08:00
wangjian963
1140912f3a
Fix Bug #437 : 【门诊手术计费】保存签章TOCTOU竞态致重复提交,且耗材计费项目缺失/重复、手术单号未关联
...
Fix: 频次总量计算改用字典store动态读取,el-input-number新增@input实时计算
2026-05-14 12:00:18 +08:00
250f9ce258
Merge remote-tracking branch 'origin/develop' into develop
2026-05-14 11:48:42 +08:00
0d6f891b47
fix bug434:门诊手术安排:编辑弹窗中“切口类型”字段未正确回显数据
...
bug426:门诊医生站-检查开立:已选择列表应支持树形展开,显示套餐明细
bug439:领用出库:选择领用药品后“总库存数量”列数据未显示
bug457:门诊收费:已签发的手术类医嘱在门诊收费列表中不显示项目名称
2026-05-14 11:48:22 +08:00
Ranyunqiao
eab0119c19
bug362 413 498 504 507
2026-05-14 11:47:18 +08:00
关羽
d43a06c343
Fix Bug #475 : 【住院医生工作站】开立检查申请单报错后仍生成申请记录
...
根因:saveRequestForm方法的预校验循环和主循环分别独立查询activityOrganizationConfig获取positionId,
存在数据不一致风险——预校验通过但主循环中positionId查找失败时,RequestForm已被保存导致脏数据。
修复:将预校验循环中查到的positionId缓存到Map中,主循环直接使用缓存结果,
避免重复查询导致的数据不一致问题。确保所有校验通过后再执行任何数据库操作。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 11:15:20 +08:00
赵云
444397e868
Fix Bug #435 : 门诊手术安排:编辑弹窗中"费用类别"字段数据未回显
...
根因:OpCreateScheduleDto 缺少 feeType 字段,导致新建手术安排时 BeanUtils.copyProperties 无法复制该字段,
保存到数据库后 fee_type 为空字符串/null,编辑时详情查询返回 null 导致前端不显示。
修复:在 OpCreateScheduleDto 新增 feeType 字段,使创建流程完整传递费用类别数据。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 10:28:48 +08:00
赵云
1a770ca0ee
Fix Bug #402 : 住院医生站诊断录入:点击保存诊断后,列表出现重复记录且部分条目元数据缺失
...
根因分析:
1. 前端保存按钮无防重复点击保护,连续点击会发送多个请求
2. 保存成功后前端使用本地排序数据更新,未从服务器重新加载,导致前后端数据不一致
3. 后端 saveDoctorDiagnosis 保存后未回写 encounterDiagnosisId,后续保存无法正确更新已有记录
修复方案:
- 前端:在 handleSaveDiagnosis 入口增加 isSaving 守卫,防止重复提交
- 前端:保存成功后调用 getList() 从服务器重新加载数据,确保前后端一致
- 后端:saveOrUpdate 后回写 encounterDiagnosisId 到返回参数,前端可跟踪记录ID
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 09:11:12 +08:00
荀彧
164ac604fb
Fix Bug #401 : 门诊完诊审计日志错误:div_log 表中 pool_id 与 slot_id 存值与设计规范不符
...
根因:completeEncounter 方法中先将队列状态更新为 COMPLETED,再用内存中
的 queueItem.getStatus() 判断是否已完诊,导致 queueAlreadyCompleted 始终为 true,
div_log 审计日志永远不会被写入。
修复:在更新队列状态之前记录原始完成状态(queueWasAlreadyCompleted),
用该值判断是否需要写入 div_log,确保完诊时正确生成审计日志。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 08:52:04 +08:00
赵云
6dc9788d8c
Fix Bug #487 : 【临床医嘱】诊疗类医嘱签发后,列表状态未实时刷新为"已签发"
...
根因分析:诊疗类(活动)医嘱签发时,后端handService()的批量状态更新
未区分签发/保存场景,导致statusEnum字段在签发时可能未被正确更新为
ACTIVE(2);前端依赖后端刷新,缺乏乐观更新机制。
修复方案:
- 前端:签发成功后立即将saveList中对应医嘱的statusEnum设为2(乐观更新),
再执行getListInfo从后端刷新
- 后端:handService()中分离签发/保存的批量更新逻辑,签发时显式设置
statusEnum=ACTIVE、authoredTime和signCode,并添加日志
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 04:44:10 +08:00
关羽
6907c7dbc8
Fix Bug #481 : [住院护士站-医嘱执行] 药品库存充足但执行时提示库存不足
...
根因: AdviceUtils.checkExeMedInventory() 中硬编码 performLocation == locationId 的匹配条件,
当医嘱的 performLocation 指向的药房没有该药品库存时(库存实际在其他药房),匹配失败导致"库存不足"错误。
修复策略: 采用两步匹配法 -
1. 先按 performLocation 匹配指定药房的库存(添加 null 容错)
2. 若指定药房无匹配,则放宽条件跨所有药房聚合库存
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 03:14:30 +08:00
关羽
56b8d0e98d
Fix Bug #475 : 【住院医生工作站】开立检查申请单报错"请先配置当前时间段的执行科室"后,系统仍生成申请记录
...
- 将requestFormId判空改为requestFormId != null && requestFormId != 0L,防止前端空字符串反序列化为0L误入编辑场景
- 在循环中逐个校验activityList中的项目是否都配置了执行科室,将所有校验前置到任何数据库操作之前,避免部分通过后在save中途抛异常
- 统一使用isEdit标志变量替代重复的null检查
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-14 02:12:06 +08:00
关羽
55eba1a0b1
Fix Bug #443 : 手术计费:点击"签发"耗材时异常报错
...
**根因分析**:
前端 handleSave 签发时,仅从 contentJson 解析数据后发送,缺少 encounterId、patientId、locationId 等关键字段。这些字段在 API 响应顶层(不在 contentJson 中),导致后端签发时字段为空。
**修复方案**:
- 前端:在 handleSave 的 saveList 映射中补充 encounterId、patientId、locationId(对应 positionId)、adviceType 等顶层关键字段
- 后端:handDevice 中 locationId 为空时,优先查询已有 DeviceRequest 的 performLocation 作为回退,避免覆盖为默认科室
2026-05-14 00:11:29 +08:00
关羽
96102e8b64
Fix Bug #401 : div_log 表中 pool_id 与 slot_id 存值不符
...
根因分析:
1. 候选池API(getCurrentDayEncounter)未返回 poolId/slotId 字段,导致护士从候选池
添加患者到队列时 poolId/slotId 始终为 null
2. triage_queue_item 中 pool_id/slot_id 为 null 后,完诊时 div_log 也写入 null 值
3. 医生站完诊和护士站完诊各自独立写入 div_log,导致同一患者产生两条 COMPLETE 记录
修复方案:
1. CurrentDayEncounterTencentDto 新增 poolId/slotId 字段
2. TencentAppMapper.xml 通过 encounter.order_id → order_main.slot_id →
adm_schedule_slot.pool_id 链路获取正确的号源信息
3. DoctorStationMainAppServiceImpl 增加防重复逻辑:队列项已为 COMPLETED 状态时
不再重复写入 div_log(说明护士站已处理过)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 23:27:08 +08:00
关羽
49df72121f
Fix Bug #412 : 门诊医生站传染病报告卡保存失败,提示报错
...
后端 saveInfectiousDiseaseReport 中 getCardNo().trim() 存在空指针异常风险,
增加 cardNo 空值校验避免 NPE 导致保存失败。
前端 buildSubmitData 中 diseaseCode 在 selectedClassA/B/C 为空时会变成 null,
增加从 selectedDiseases 兜底取值逻辑确保 diseaseCode 始终有值。
2026-05-13 23:18:53 +08:00
关羽
e5cd7bd792
Fix Bug #497 : 【住院医生工作站-检查申请】检查申请列表缺失"申请单状态"列及全流程闭环状态流转逻辑
...
根因:/reg-doctorstation/request-form/get-check 接口只接收 encounterId 参数,前端传递的 startDate/endDate/status 筛选参数被后端完全忽略,导致日期范围和状态筛选不生效。
修复:Controller 增加 startDate、endDate、status、keyword 参数,透传至已有的重载 Service 方法(SQL 和 DTO 中 status 字段已存在)。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 20:08:41 +08:00
赵云
dc9f47c534
Fix Bug #489 : 【医嘱闭环】医生站签发单条长期药品医嘱,护士校对界面生成重复(两条)待校对记录
...
根因分析:
1. SQL查询JOIN倍增:selectInpatientAdvicePage 中多个LEFT JOIN(如adm_encounter_location、
adm_encounter_participant、med_medication)可能产生重复行,外层查询无DISTINCT去重
2. 防重复逻辑缺陷:handMedication() 中仅对 DbOpType.INSERT 进行去重,若同一请求中包含
INSERT 和 UPDATE(编辑后签发的医嘱),两者uniqueKey相同但UPDATE不受去重限制,
导致 UPDATE 修改旧记录 + INSERT 创建新记录 = 两条数据
修复方案:
1. 在AdviceProcessAppMapper.xml的UNION两侧子查询中添加SELECT DISTINCT,防止JOIN倍增
2. 在AdviceManageAppServiceImpl.java中移除dbOpType限制,对所有医嘱(INSERT+UPDATE)
统一按uniqueKey去重,确保同一业务医嘱只处理一次
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 19:19:47 +08:00
赵云
0f85e95d24
Fix Bug #475 : 【住院医生工作站】开立检查申请单报错"请先配置当前时间段的执行科室"后,系统仍生成申请记录
...
根因:saveRequestForm 方法中,执行科室配置校验(activityOrganizationConfig.isEmpty)位于 saveOrUpdate(requestForm) 之后,导致即使校验失败抛出异常,RequestForm 记录已被写入数据库。
修复:将校验逻辑移至方法开头,在任何数据库操作之前执行,确保校验失败时不产生任何脏数据。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-13 18:13:10 +08:00