mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-19 18:45:03 +08:00
update 操作文档
This commit is contained in:
@@ -178,3 +178,128 @@
|
||||
|
||||
- 使用默认路径:`jsowellTask.importAdapayUnsplitRecordAndCompleteFields()`
|
||||
- 指定路径:`jsowellTask.importAdapayUnsplitRecordAndCompleteFields('doc/万车充小程序-未分账明细.xlsx')`
|
||||
|
||||
## 7. 完整执行流程(落地版)
|
||||
|
||||
以下流程是当前代码已支持、可直接按顺序执行的标准操作。
|
||||
|
||||
### 7.1 执行前检查
|
||||
|
||||
1. 使用 JDK8。
|
||||
2. 编译通过:
|
||||
|
||||
```bash
|
||||
mvn -pl jsowell-quartz -am -DskipTests compile
|
||||
```
|
||||
|
||||
3. 确认 Excel 文件就绪:
|
||||
|
||||
- 默认路径:`doc/万车充小程序-未分账明细.xlsx`
|
||||
- 或你自己的绝对路径/相对路径
|
||||
|
||||
### 7.2 第一步:导入并补齐缺失字段
|
||||
|
||||
执行任务方法(任选其一):
|
||||
|
||||
1. 默认路径:
|
||||
|
||||
```text
|
||||
jsowellTask.importAdapayUnsplitRecordAndCompleteFields()
|
||||
```
|
||||
|
||||
2. 指定路径:
|
||||
|
||||
```text
|
||||
jsowellTask.importAdapayUnsplitRecordAndCompleteFields('doc/万车充小程序-未分账明细.xlsx')
|
||||
```
|
||||
|
||||
本步骤会自动完成:
|
||||
|
||||
1. Excel -> `adapay_unsplit_record` 导入(`insertOrUpdateSelective`,可重复执行)
|
||||
2. 自动补齐 `order_code / due_refund_amount / settle_amount / pile_type`
|
||||
3. 输出导入统计与补齐统计日志
|
||||
|
||||
### 7.3 第二步:导入后校验
|
||||
|
||||
建议执行以下 SQL:
|
||||
|
||||
```sql
|
||||
-- 总量
|
||||
SELECT COUNT(*) AS total_cnt
|
||||
FROM adapay_unsplit_record;
|
||||
|
||||
-- 核心补齐字段缺失情况
|
||||
SELECT COUNT(*) AS missing_cnt
|
||||
FROM adapay_unsplit_record
|
||||
WHERE order_code IS NULL
|
||||
OR settle_amount IS NULL
|
||||
OR due_refund_amount IS NULL
|
||||
OR pile_type IS NULL;
|
||||
```
|
||||
|
||||
`missing_cnt` 理想结果应接近 `0`(少量异常数据可人工排查)。
|
||||
|
||||
### 7.4 第三步:执行未分账处理(分账到 memberId=0)
|
||||
|
||||
执行任务方法(任选其一):
|
||||
|
||||
1. 使用默认 appId(`Constants.DEFAULT_APP_ID`)+ pageSize=500:
|
||||
|
||||
```text
|
||||
jsowellTask.processUnsplitRecordToDefaultMember()
|
||||
```
|
||||
|
||||
2. 指定 appId 和分页大小:
|
||||
|
||||
```text
|
||||
jsowellTask.processUnsplitRecordToDefaultMember('你的wechatAppId', 200)
|
||||
```
|
||||
|
||||
建议先用 `200` 小批量试跑,再提升到 `500`。
|
||||
|
||||
本步骤会自动完成:
|
||||
|
||||
1. 分页读取 `queryList()` 的待分账记录
|
||||
2. 先查汇付最新确认信息,计算实时剩余可分账金额
|
||||
3. 取 `min(数据库待分账金额, 汇付实时剩余金额)` 作为本次 `confirmAmt`
|
||||
4. 调 `PaymentConfirm` 分账,分账对象固定 `memberId=0`
|
||||
5. 回写结果:
|
||||
- 成功:更新 `confirmed_split_amount`,`split_flag=SUCCESS`
|
||||
- 失败:`split_flag=FAILED`
|
||||
|
||||
### 7.5 第四步:循环执行直到待分账清零
|
||||
|
||||
每轮执行后,建议跑以下 SQL:
|
||||
|
||||
```sql
|
||||
-- 按当前业务口径,仍待处理数量
|
||||
SELECT COUNT(*) AS remain_cnt
|
||||
FROM adapay_unsplit_record
|
||||
WHERE (settle_amount > confirmed_split_amount - payment_revoke_amount)
|
||||
OR (due_refund_amount > refund_amount);
|
||||
|
||||
-- 分账结果分布
|
||||
SELECT split_flag, COUNT(*) AS cnt
|
||||
FROM adapay_unsplit_record
|
||||
GROUP BY split_flag;
|
||||
```
|
||||
|
||||
当 `remain_cnt = 0` 可视为本次补分账完成。
|
||||
|
||||
### 7.6 失败重试与回滚
|
||||
|
||||
1. 失败重试:重新执行 `processUnsplitRecordToDefaultMember(...)` 即可。
|
||||
2. 回滚(如金额或目标账户异常):
|
||||
- 按 `paymentId` 查询对应 `payment_confirm_id`
|
||||
- 调 `createConfirmReverse(paymentConfirmId, wechatAppId)` 撤销
|
||||
- 重新执行正确参数的分账流程
|
||||
|
||||
## 8. 一键操作建议(便于下次复用)
|
||||
|
||||
按下面顺序执行,基本可覆盖同类任务:
|
||||
|
||||
1. `jsowellTask.importAdapayUnsplitRecordAndCompleteFields('文件路径')`
|
||||
2. 校验 `missing_cnt`
|
||||
3. `jsowellTask.processUnsplitRecordToDefaultMember('appId', 200)`
|
||||
4. 查看 `remain_cnt`
|
||||
5. 若 `remain_cnt > 0`,重复第 3-4 步,最后切 `pageSize=500` 提速
|
||||
|
||||
Reference in New Issue
Block a user