docs(evidence): add counter settle filter bugfix verification
This commit is contained in:
parent
9cbd9a8b75
commit
08550406ad
@ -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 作为收费员过滤值。
|
||||
Loading…
x
Reference in New Issue
Block a user