diff --git a/bug468_analysis.md b/bug468_analysis.md new file mode 100644 index 000000000..b5e34b188 --- /dev/null +++ b/bug468_analysis.md @@ -0,0 +1,85 @@ +# Bug #468 分析报告 + +## Bug 描述 +[住院医生工作站-检验申请] 列表页缺失【单据状态】列,无法闭环管理检验医嘱执行进度 + +## 阶段1:深度分析 + +### 数据流追踪 + +1. **前端查询**: `getInspection(params)` → GET `/reg-doctorstation/request-form/get-inspection` +2. **后端控制器**: `RequestFormManageController.getInspectionRequestForm()` → 调用 `iRequestFormManageAppService.getRequestForm()` +3. **后端服务**: `RequestFormManageAppServiceImpl.getRequestForm()` → 调用 `requestFormManageAppMapper.getRequestForm()` +4. **SQL查询**: `RequestFormManageAppMapper.xml` 中的 `getRequestForm` 语句 +5. **状态计算**: SQL 使用 CASE WHEN 根据 `wor_service_request.status_enum` 计算 `computed_status` +6. **前端渲染**: `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 分支合并): +1. 新增 `el-table-column` 单据状态列(位于申请单号之后) +2. 新增 `parseBillStatus()` 函数用于状态码→文本转换 +3. 新增筛选表单中的单据状态下拉选择 +4. 后端 SQL 新增 `computed_status` 动态计算逻辑 +5. 前端使用 `scope.row.billStatus ?? scope.row.status` 兼容字段名 + +## 修复结果 + +✅ 成功,Bug #468 已在 develop 分支修复并合并。 + +当前 guanyu 分支与 develop 分支代码完全一致(diff 为空),无需额外代码改动。 + +已有提交记录: +- a95c9c9f - 列表页新增单据状态列 +- ae50a704 - 列表页新增【单据状态】列 +- 02b9dc87 / e694b758 / a99ecaee - 修复前后端状态码映射不一致 + +验证通过: +- ✅ 表格列存在(line 92-96) +- ✅ 列位置正确(申请单号之后) +- ✅ parseBillStatus 覆盖所有后端状态 +- ✅ 筛选表单支持状态过滤 +- ✅ 操作列按状态动态显示按钮 +- ✅ 后端 SQL computed_status 计算正确