72 lines
1.8 KiB
Markdown
72 lines
1.8 KiB
Markdown
# 抄表开账 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
|