Files
his/MD/bugs/BUG_712_ANALYSIS.md

5.9 KiB
Raw Blame History

Bug #712 诸葛亮分析报告

文档类型: Bug分析 分析时间: 2026-06-13 02:46:37 分析模型: mimo-v2.5 (LLM深度分析)


基本信息

  • Bug #: 712
  • 标题: 【收费工作站-预交金管理】“预交金管理”页面缺失展示“支付方式”列及患者“床号”、“费用类型”
  • 模块: 住院登记管理
  • 提出人: 陈显精

分析完成。以下是完整的 Bug #712 分析报告。


一、Bug 理解

Bug 标题:【收费工作站-预交金管理】"预交金管理"页面缺失展示"支付方式"列及患者"床号"、"费用类型"

重现步骤

  1. 登录系统,进入"收费工作站" → "预交金管理"页面
  2. 输入住院号查询关联患者(如"三太子"
  3. 检查患者基本信息卡片及下方收支明细列表

期望结果

  1. 患者卡片区增加展示"床号"012床与"费用类型"(医保类型,如:职工医保)
  2. 明细列表区在"票据类型"与"收款时间"之间新增"支付方式"字段列

附图分析关键信息

  • 图2492/2493 显示患者卡片区域"在院科室/病区: 呼吸内科病房/呼吸内科一区"没有独立展示床号和费用类型
  • 收支明细列表列头为:序号、收据号、金额、票据类型、收款时间、收款员 —— 缺少"支付方式"列
  • 截图中有红色标注:"增加患者床号和费用类型"、"增加支付方式字段列"

综合总结:用户在预交金管理页面查询住院患者后,患者信息卡片只显示了科室/病区,无法看到该患者的具体床号和医保费用类型;下方流水明细列表缺少支付方式列,无法知道每笔交易的支付渠道(现金/支付宝等)。这两个信息对打印收据和财务核对都是必需的。


二、根因分析

经过全链路 6 环分析,问题分布在前端和后端两个层面:

缺陷 1费用类型费用类型/医保类型)缺失

前端 index.vue:88-110:患者信息卡片区域没有展示"费用类型"字段。 后端 AdvancePaymentInfoDto.javaDTO 缺少 ybClassText(医保类别文本)字段。 后端 AdvancePaymentManageAppMapper.xmlgetAdvancePaymentInfo SQL 查询未 SELECT ae.yb_class_text数据库adm_encounter 表已有 yb_class_text 字段(保险类型文本,如"职工医保")。

缺陷 2床号显示不突出

后端 SQL 已查询 alb.name AS bed_nameDTO 已有 bedName 字段。 前端 index.vue:115-120:床号被拼在"在院科室/病区"字符串中(wardName + houseName + bedName),没有独立展示为"床号012床"。

缺陷 3支付方式列缺失

前端 index.vue:147<vxe-column field="payWay" title="支付方式" /> 被注释掉了。 后端 AdvancePaymentFlowRecordDto.javaDTO 缺少支付方式字段(payEnum / payWay)。 后端 AdvancePaymentManageAppMapper.xml:90-99getAdvancePaymentFlowRecordList SQL 只查了 fin_payment_reconciliation 主表,未 JOIN fin_payment_rec_detail 子表(pay_enum 字段在子表中)。 数据库fin_payment_rec_detail 表有 pay_enum(支付类型编码,如现金/支付宝/微信)。

涉及文件清单

文件 修改内容
AdvancePaymentInfoDto.java 新增 ybClassText 字段
AdvancePaymentManageAppMapper.xml getAdvancePaymentInfo SQL 加 ae.yb_class_text
AdvancePaymentFlowRecordDto.java 新增 payEnum + payWay 字段
AdvancePaymentManageAppMapper.xml getAdvancePaymentFlowRecordList SQL JOIN fin_payment_rec_detail,取 pay_enum
AdvancePaymentManageAppServiceImpl.java 流水记录返回后增加 payWay 枚举映射
index.vue 卡片区域新增"床号"和"费用类型"展示;取消注释支付方式列

三、修复方案

Step 1后端 — DTO 新增字段

AdvancePaymentInfoDto.java:新增字段

/** 费用类型(医保类型文本,如:职工医保) */
private String ybClassText;

AdvancePaymentFlowRecordDto.java:新增字段

/** 支付方式编码 */
private Integer payEnum;
/** 支付方式文本(如:现金、支付宝) */
private String payWay;

Step 2后端 — Mapper XML 修改

AdvancePaymentManageAppMapper.xml

  1. getAdvancePaymentInfo 子查询中加 ae.yb_class_text AS yb_class_text
  2. getAdvancePaymentFlowRecordList SQL 加 JOIN fin_payment_rec_detail,取 prd.pay_enum

Step 3后端 — ServiceImpl 枚举映射

AdvancePaymentManageAppServiceImpl.java

getAdvancePaymentFlowRecord 方法中增加支付方式枚举映射:

e.setPayWay(EnumUtils.getInfoByValue(YbPayment.class, e.getPayEnum()));

Step 4前端 — 页面字段补充

index.vue

  1. 在"在院科室/病区"行下方(或同行),新增展示:
    • 床号: {{ patientInfo.bedName }}(独立标签)
    • 费用类型: {{ patientInfo.ybClassText }}
  2. 取消注释支付方式列,改为:
    <vxe-column field="payWay" title="支付方式" align="center" min-width="100" />
    
  3. 插入位置:在 paymentEnum_enumText(票据类型)列之后、operateTime(收款时间)列之前

四、路由决策

FIXER: zhaoyun赵云 — 前端开发) REASON: 本次修复核心在于前端页面展示(卡片字段补充 + 表格列取消注释后端改动量较小DTO 加 2 字段、SQL 加 2 列、Service 加 1 行映射),属于前后端联动的 UI 展示修复,赵云可一并处理前端和后端轻量改动。无需 DBA 审查(无建表/加字段迁移)。


路由决策

  • FIXER_ID: guanyu
  • 修复 Agent: guanyu后端
  • 原因: LLM 分析决策

⚠️ 修复人员请先验证以上分析是否正确,再执行修复。