feat: 实现无交易记录自动结算功能

核心功能:
- 配置开关:11个配置项,支持灰度发布
- 定时任务:Quartz调度,可配置执行间隔
- 幂等保护:Redis分布式锁 + 数据库乐观锁
- 数据校验:充电桩在线检测、数据新鲜度、金额异常告警
- 结算逻辑:实时数据转换为结算数据,自动处理退款
- 单元测试:6个测试用例,覆盖主要场景

新增文件:
- AutoSettleConfig.java - 配置属性类
- SettlementDataConverter.java - 数据转换工具
- AutoSettleOrdersWithoutTransactionTest.java - 单元测试

修改文件:
- OrderBasicInfoService.java - 添加自动结算接口
- OrderBasicInfoServiceImpl.java - 实现自动结算逻辑
- OrderBasicInfoMapper.java - 添加查询和乐观锁更新方法
- OrderBasicInfoMapper.xml - 添加SQL实现
- JsowellTask.java - 添加定时任务方法
- application.yml - 添加配置项示例

详细设计:见 docs/feature-tracker-无交易记录自动结算.md
This commit is contained in:
jsowell
2026-08-11 16:40:35 +08:00
parent 33b48f2ad4
commit 121b357a20
10 changed files with 1416 additions and 23 deletions

View File

@@ -753,10 +753,16 @@ public interface OrderBasicInfoService{
List<String> merchantIdList, List<String> stationIdList);
/**
* 大数据平台-今日充电电量Java汇总
* 大数据平台-今日充电电量(Java汇总)
*
* @return 今日已完成订单的充电电量合计kWh
* @return 今日已完成订单的充电电量合计(kWh)
*/
java.math.BigDecimal getTodayElectricity(String startTime, String endTime,
List<String> merchantIdList, List<String> stationIdList);
/**
* 无交易记录自动结算
* 扫描停止超时的待结算订单,如果有实时数据但无交易记录,则自动结算
*/
void autoSettleOrdersWithoutTransactionRecord();
}