d9a8ab3e1e71fc08743d96988715da09b3266ffe
根因: - Bug #请修复 Bug #506 存在的问题 修复: - ### 修改的文件(5个修改 + 4个清理) - ** - | 文件 | 变更 | - |---|---| - | `RegistrationController.java` | 改用 `RegistrationCancelService` 代替 `RegistrationService`(后者缺少 `refundRegistration` 方法) | - | `RegistrationCancelService.java` | 新增 `refundRegistration(Long registrationId)` 方法,从挂号ID查找订单并执行完整退号流程 | - | `RegistrationCancelServiceImpl.java` | **补全 refund_log 插入**(之前被注释掉);新增 `refundRegistration` 实现;统一事务管理 | - | `RegistrationCancelMapper.java` | 新增 `selectRegistrationById` 查询 method,支持按挂号ID查找关联订单 | - | `OrderMapper.java` (inpatient) | 新增 `ORDER_STATUS_CANCELLED`、`ORDER_PAY_STATUS_REFUNDED` 常量,`updateOrderStatusToCancelled`、`updateOrderMainForCancellation` 方法 | - 清理的重复/损坏文件(4个):** - `impl/RegistrationCancelServiceImpl.java` — 重复实现,与根级冲突 - `impl/RegistrationServiceImpl.java` — 继承关系无效(`implements` 一个 `@Service` 类),且引用了不存在的方法 - 含零宽字符的 `RegistrationMapper.java` 副本 — 同一包名导致类名冲突 - `openhs/.../OrderMapper.java` — 同一包 `com.openhis.web.inpatient.mapper` 的重复副本 - ### 数据流全链路验证(Bug #506 的 4 点都覆盖) - | 检查点 | 预期(PRD) | SQL 确认 | - |---|---|---| - | `order_main.status` | 0(已取消) | `SET status = 0` | - | `order_main.pay_status` | 3(已退费) | `SET pay_status = 3` | - | `order_main.cancel_time` | 当前时间 | `SET cancel_time = NOW()` | - | `order_main.cancel_reason` | '诊前退号' | `SET cancel_reason = '诊前退号'` | - | `adm_schedule_slot.status` | 0(待约) | `SET status = 0` | - | `adm_schedule_slot.order_id` | NULL | `SET order_id = NULL` | - | `adm_schedule_pool.version` | version + 1 | `SET version = version + 1` | - | `adm_schedule_pool.booked_num` | booked_num - 1 | `SET booked_num = booked_num - 1` | - | `refund_log.order_id` | order_main.id | `INSERT INTO refund_log (order_id, ...)` 已取消注释 | - ### 执行路径 - Controller.refund(registrationId) - → RegistrationCancelService.refundRegistration(registrationId) - → RegistrationCancelMapper.selectRegistrationById(registrationId) # 获取 order_id + pay_amount - → RegistrationCancelServiceImpl.cancelRegistration(orderId, payAmount) - 1. cancelMapper.updateOrderStatus(orderId) # order_main 状态更新 - 2. orderMapper.updateOrderStatusToCancelled(...) # 医嘱状态→CANCELLED - 3. cancelMapper.rollbackSlotStatus(orderId) # 号源回滚 - 4. cancelMapper.updatePoolVersion(poolId) # 排班池 version+1, booked_num-1 - 5. cancelMapper.insertRefundLog(orderId, amount) # ✅ 新增退费日志插入
Description
No description provided
Languages
Java
47.5%
Vue
45.9%
JavaScript
5.6%
HTML
0.6%
SCSS
0.1%