mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-02 21:18:05 +08:00
[WLOS-020] 定位异常/待结算状态写入点并梳理影响面
This commit is contained in:
@@ -35,9 +35,22 @@ created_at: 2026-01-23T16:45:56.6767838+08:00
|
||||
2. 代码定位与影响面梳理
|
||||
- 定位现有白名单异常订单批量处理入口:`jsowell-admin/src/main/java/com/jsowell/service/TempService.java` 的 `whiteListSettlement` 与 `jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java` 的 `/whiteListSettlement`。
|
||||
- 查找订单状态被设置为异常/待结算的路径,确认修正应放在“状态写入点”还是“事后补偿点”。重点关注:
|
||||
- `jsowell-common/src/main/java/com/jsowell/common/enums/ykc/OrderStatusEnum.java`
|
||||
- `jsowell-admin/src/main/java/com/jsowell/service/OrderService.java`(存在将充电中订单标记为异常的逻辑)
|
||||
- `jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java`、`jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java`(结算后会落库为完成)
|
||||
- `jsowell-common/src/main/java/com/jsowell/common/enums/ykc/OrderStatusEnum.java`
|
||||
- `jsowell-admin/src/main/java/com/jsowell/service/OrderService.java`(存在将充电中订单标记为异常的逻辑)
|
||||
- `jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java`、`jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java`(结算后会落库为完成)
|
||||
|
||||
📌 影响面清单(可审计)
|
||||
- 白名单批量入口(人工/管理接口):`TempController#/whiteListSettlement` → `TempService#whiteListSettlement`(当前仅允许异常订单、且硬编码 payMode=3,并调用 `OrderService#manualSettlementOrder`,会触发远程停机/拉交易记录等外部依赖)。
|
||||
- 订单标记异常(后管查询触发):`OrderService#getOrderDetail` 在“充电中”但实时数据缺失/超时场景会将订单置为 `ABNORMAL(4)` 并落库。
|
||||
- 待结算写入点(设备/交易链路):
|
||||
- `RemoteStopChargingStrategy`:停机成功→`STAY_SETTLEMENT(2)`;停机失败→`ABNORMAL(4)`。
|
||||
- `TransactionRecordsStrategy`:收到交易记录后,若订单为 `ABNORMAL(4)` 会先改为 `STAY_SETTLEMENT(2)`,随后进入 `ProgramLogicFactory#getProgramLogic(...).settleOrder(...)` 完成结算落库。
|
||||
- 其他协议/平台(同类写入点):`jsowell-netty` 的 yunkuaichong handlers、`jsowell-thirdparty` 的 Huawei 等也存在将订单置为 `STAY_SETTLEMENT(2)` 的路径(需避免在这些写入点引入“白名单直接完成”造成副作用扩散)。
|
||||
- 结算后落库完成(核心):`AbstractProgramLogic#returnUpdateOrderBasicInfo` 会设置 `ORDER_COMPLETE(6)` 并写入结算时间/金额字段(及可能补 SOC)。
|
||||
|
||||
🧭 修正插入点选择(结论)
|
||||
- 选择“事后补偿点”而不是在各类“状态写入点”分散修正:以统一补偿方法 + 白名单批量入口调用为主(后续可扩展定时任务/管理按钮复用该方法)。
|
||||
- 理由:避免侵入设备协议/交易记录链路(风险大、场景多);补偿方法可控、幂等、日志可追溯,且明确不触发远程停机/拉交易/MQ/解锁等外部副作用。
|
||||
|
||||
3. 设计修正策略(推荐“统一补偿方法”)
|
||||
- 在订单领域服务中新增一个可复用的方法(命名示例:`completeWhitelistOrderIfNeeded(orderCode)`),封装:
|
||||
|
||||
Reference in New Issue
Block a user