docs(evidence): add counter settle filter bugfix verification

This commit is contained in:
tangweijie 2026-06-09 11:33:29 +08:00
parent 9cbd9a8b75
commit 08550406ad

View File

@ -0,0 +1,137 @@
# 柜台结清列表过滤字段对齐修复验证记录
日期2026-06-09
## 问题现象
`GET /admin-api/business/charge/counter-settle/unsettled-page` 前端传入 `custCode``chargeWay` 后,待结清分页结果未按客户编号和收费方式过滤。
追加核对 `charge` 系列前端接口口径后,又发现:
- 前端 `CounterUnsettledPageReqVO` 还声明了 `deptId`,后端待结清请求对象未接收,服务层未按站点过滤。
- 前端已结清列表传入 `settleNo`,后端 `CounterSettledPageReqVO` 未接收,`SettleRecordMapper#selectSettledPage` 未按结清单号过滤。
示例参数:
```text
pageNo=1&pageSize=10&custCode=15980151657&cashierId=&chargeWay=
```
## 根因
- 后端 `CounterUnsettledPageReqVO` 仅定义了 `cashierId`,未定义 `deptId``custCode``chargeWay`Spring MVC 绑定查询参数时会忽略这些字段。
- `CounterSettleApplicationServiceImpl#queryUnsettledItems` 只按收费员查询待结清支付主单,未继续应用客户编号、收费方式、营业站点过滤。
- 后端 `CounterSettledPageReqVO` 未定义 `settleNo`,已结清 Mapper 查询条件也未包含 `settle_no`
## 修复范围
仓库:`../water-backend`
分支:`develop`
修复前基线:`86203127e`
修改文件:
- `sw-business/sw-business-server/src/main/java/cn/com/emsoft/sw/business/controller/admin/charge/vo/CounterUnsettledPageReqVO.java`
- `sw-business/sw-business-server/src/main/java/cn/com/emsoft/sw/business/controller/admin/charge/vo/CounterSettledPageReqVO.java`
- `sw-business/sw-business-server/src/main/java/cn/com/emsoft/sw/business/dal/mysql/settlerecord/SettleRecordMapper.java`
- `sw-business/sw-business-server/src/main/java/cn/com/emsoft/sw/business/service/countersettle/CounterSettleApplicationServiceImpl.java`
- `sw-business/sw-business-server/src/test/java/cn/com/emsoft/sw/business/service/countersettle/CounterSettleApplicationServiceImplTest.java`
- `sw-business/sw-business-server/src/test/java/cn/com/emsoft/sw/business/integration/countersettle/CounterSettleIntegrationTest.java`
## 修复内容
- `CounterUnsettledPageReqVO` 新增 `deptId``custCode``chargeWay` 查询字段。
- 待结清列表在按收费员取得候选支付主单后,继续按 `custCode` 精确匹配、按 `chargeWay` 精确匹配、按账单 `deptId` 精确匹配。
- 待结清导出复用同一查询逻辑,因此同步支持相同过滤条件。
- `CounterSettledPageReqVO` 新增 `settleNo` 查询字段。
- `SettleRecordMapper#selectSettledPage` 新增 `settleNo` 精确过滤,已结清导出复用同一查询逻辑。
- 增加服务层单测覆盖 `custCode + chargeWay + deptId` 过滤、`settleNo` 参数传递和 Mapper 源码契约。
- 增加接口集成测试断言,覆盖未结账匹配、不匹配客户编号、不匹配收费方式、不匹配站点,以及已结账匹配/不匹配结清单号;该集成测试受 `REV004_IT_DB_URL` 环境变量控制。
## 验证命令与结果
### RED 验证
```bash
cd /Volumes/Dpan/github/water-workspace/water-backend
mvn -pl sw-business/sw-business-server -Dtest=CounterSettleApplicationServiceImplTest#getUnsettledPage_shouldFilterByCustCodeAndChargeWay test
```
结果:失败,符合预期。
- 失败点:`CounterUnsettledPageReqVO` 缺少 `setCustCode(String)``setChargeWay(int)`
- 说明:证明后端请求对象没有承接过滤参数。
```bash
cd /Volumes/Dpan/github/water-workspace/water-backend
mvn -pl sw-business/sw-business-server -Dtest=CounterSettleApplicationServiceImplTest#getSettledPage_shouldUseMapperPagedResult+getUnsettledPage_shouldFilterByCustCodeChargeWayAndDeptId test
```
结果:失败,符合预期。
- 失败点:`CounterSettledPageReqVO` 缺少 `setSettleNo(String)` / `getSettleNo()``CounterUnsettledPageReqVO` 缺少 `setDeptId(long)`
- 说明:证明后端请求对象未完整对齐前端 `charge` 系列列表筛选字段。
### 服务层回归
```bash
cd /Volumes/Dpan/github/water-workspace/water-backend
mvn -pl sw-business/sw-business-server -Dtest=CounterSettleApplicationServiceImplTest#getUnsettledPage_shouldFilterByCustCodeAndChargeWay test
```
结果:通过。
- Surefire 汇总:`Tests run: 1, Failures: 0, Errors: 0, Skipped: 0`
- Maven 结果:`BUILD SUCCESS`
```bash
cd /Volumes/Dpan/github/water-workspace/water-backend
mvn -pl sw-business/sw-business-server -Dtest=CounterSettleApplicationServiceImplTest#getSettledPage_shouldUseMapperPagedResult+getUnsettledPage_shouldFilterByCustCodeChargeWayAndDeptId test
```
结果:通过。
- Surefire 汇总:`Tests run: 2, Failures: 0, Errors: 0, Skipped: 0`
- Maven 结果:`BUILD SUCCESS`
### 相关服务单测
```bash
cd /Volumes/Dpan/github/water-workspace/water-backend
mvn -pl sw-business/sw-business-server -Dtest=CounterSettleApplicationServiceImplTest test
```
结果:通过。
- Surefire 汇总:`Tests run: 22, Failures: 0, Errors: 0, Skipped: 0`
- Maven 结果:`BUILD SUCCESS`
### 编译验证
```bash
cd /Volumes/Dpan/github/water-workspace/water-backend
mvn -pl sw-business/sw-business-server -DskipTests compile
```
结果:通过。
- Maven 结果:`BUILD SUCCESS`
### 接口集成测试
```bash
cd /Volumes/Dpan/github/water-workspace/water-backend
mvn -pl sw-business/sw-business-server -Dtest=CounterSettleIntegrationTest#counterSettleApis_shouldSupportUnsettledConfirmSettledAndDetails test
```
结果:未执行,不作为通过项。
- Surefire 汇总:`Tests run: 1, Failures: 0, Errors: 0, Skipped: 1`
- 原因:`CounterSettleIntegrationTest` 标注 `@EnabledIfEnvironmentVariable(named = "REV004_IT_DB_URL", matches = ".+")`,当前环境未提供该变量。
## 备注
- 本次验证期间存在既有 Maven model warning、Mockito dynamic-agent warning、`MockBean` deprecation warning未导致编译或已执行单测失败。
- `cashierId` 为空时仍沿用既有逻辑:优先使用当前登录用户 ID 作为收费员过滤值。