fujian_water_biz_doc/docs/evidence/bugfix/meter-reading-billing-p0-guard-2026-06-20.md

72 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 抄表开账 P0 保护修复验证记录
- 时间2026-06-20 15:56:43 +0800
- 仓库water-backend
- 分支develop
- 范围:普通开账前置状态校验、取消开账账单状态保护
## 修复内容
1. `ChargeServiceImpl.validateReadingDataBeforeBilling`
- 普通批量开账新增前置条件:抄表记录必须为 `CheckStateEnum.REVIEWED`
- 已开账或已有营业账记录仍优先返回重复开账错误。
2. `ChargeServiceImpl.cancelChargeByReadingDataIds`
- 空入参、无关联营业账时直接返回。
- 关联营业账存在 `PayStateEnum.PAID` 时禁止取消开账。
- 关联营业账存在 `PayStateEnum.SETTLED` 时禁止取消开账。
- 禁止场景下不删除营业账明细和营业账主记录。
## 红灯验证
新增测试后、修复实现前执行:
```bash
mvn -pl sw-business/sw-business-server -am -Dtest=ChargeServiceBillingValidationTest -Dsurefire.failIfNoSpecifiedTests=false test
```
结果:
- `cancelChargeByReadingDataIds_shouldRejectPaidCharge` 失败:当前实现未抛异常。
- `generateChargeBatch_shouldRejectMeterRecordedReadingDataWithoutReview` 失败:当前实现未在校验阶段拦截未复核记录。
## 绿灯验证
修复后执行:
```bash
mvn -pl sw-business/sw-business-server -am -Dtest=ChargeServiceBillingValidationTest -Dsurefire.failIfNoSpecifiedTests=false test
```
结果:
- Tests run: 7
- Failures: 0
- Errors: 0
- Skipped: 0
- BUILD SUCCESS
补充执行:
```bash
mvn -pl sw-business/sw-business-server -am -Dtest=ReadingDataServiceImplCheckValidationTest,ChargeServiceBillingValidationTest -Dsurefire.failIfNoSpecifiedTests=false test
```
结果:
- Tests run: 8
- Failures: 0
- Errors: 0
- Skipped: 0
- BUILD SUCCESS
编译验证:
```bash
mvn -pl sw-business/sw-business-server -am -DskipTests compile
```
结果:
- BUILD SUCCESS