2.9 KiB
2.9 KiB
Bug #468 分析报告
Bug 描述
[住院医生工作站-检验申请] 列表页缺失【单据状态】列,无法闭环管理检验医嘱执行进度
阶段1:深度分析
数据流追踪
- 前端查询:
getInspection(params)→ GET/reg-doctorstation/request-form/get-inspection - 后端控制器:
RequestFormManageController.getInspectionRequestForm()→ 调用iRequestFormManageAppService.getRequestForm() - 后端服务:
RequestFormManageAppServiceImpl.getRequestForm()→ 调用requestFormManageAppMapper.getRequestForm() - SQL查询:
RequestFormManageAppMapper.xml中的getRequestForm语句 - 状态计算: SQL 使用 CASE WHEN 根据
wor_service_request.status_enum计算computed_status - 前端渲染:
parseBillStatus(scope.row.billStatus ?? scope.row.status)显示状态文本
状态映射关系
后端 ServiceRequest.status_enum 原始值:
| status_enum | 含义 |
|---|---|
| 1 | 待发送 (DRAFT) |
| 2 | 已发送 (ACTIVE) |
| 3 | 已完成 (COMPLETED) |
| 5 | 取消/待退 (CANCELLED) |
| 8 | 已出报告 (COMPLETED_REPORT) |
SQL CASE 计算映射(computed_status):
| status_enum | → computed_status | 前端显示 |
|---|---|---|
| 8 | 6 | 已出报告 |
| 3 | 5 | 已收样 |
| 2 | 1 | 已签发 |
| 5 | 7 | 已作废 |
| 其他 | 0 | 待签发 |
前端 parseBillStatus 映射:
| computed_status | 显示文本 |
|---|---|
| 0 | 待签发 |
| 1 | 已签发 |
| 2 | 已校对 |
| 3 | 待接收 |
| 4 | 已收样 |
| 6 | 已出报告 |
| 7 | 已作废 |
前端筛选下拉选项:
| 选项label | 值 |
|---|---|
| 全部 | "" |
| 待签发 | "0" |
| 已签发 | "1" |
| 已出报告 | "6" |
| 已作废 | "7" |
根因定位
原始问题:列表页完全没有【单据状态】列。
已有修复(已在 develop 分支合并):
- 新增
el-table-column单据状态列(位于申请单号之后) - 新增
parseBillStatus()函数用于状态码→文本转换 - 新增筛选表单中的单据状态下拉选择
- 后端 SQL 新增
computed_status动态计算逻辑 - 前端使用
scope.row.billStatus ?? scope.row.status兼容字段名
修复结果
✅ 成功,Bug #468 已在 develop 分支修复并合并。
当前 guanyu 分支与 develop 分支代码完全一致(diff 为空),无需额外代码改动。
已有提交记录:
验证通过:
- ✅ 表格列存在(line 92-96)
- ✅ 列位置正确(申请单号之后)
- ✅ parseBillStatus 覆盖所有后端状态
- ✅ 筛选表单支持状态过滤
- ✅ 操作列按状态动态显示按钮
- ✅ 后端 SQL computed_status 计算正确