上传源代码版本
This commit is contained in:
146
.trae/documents/simplify_daily_stats_output_plan.md
Normal file
146
.trae/documents/simplify_daily_stats_output_plan.md
Normal file
@@ -0,0 +1,146 @@
|
||||
# 简化日级报表输出字段 - 计划
|
||||
|
||||
**目标**:精简GetDailyLabelStatsChineseAsync()的输出,仅保留17个核心字段
|
||||
|
||||
**用户需求**:只保留以下字段
|
||||
1. 日期
|
||||
2. 当日新增换单数
|
||||
3. 16点前到仓包裹数
|
||||
4. 16点后到仓包裹数
|
||||
5. 累计要换的总单数
|
||||
6. 当天应该换单数
|
||||
7. 换单失败未完结订单
|
||||
8. 当日换单失败
|
||||
9. 当日换单成功数
|
||||
10. 当日STOP数
|
||||
11. 24H内完成数
|
||||
12. 当日完成数
|
||||
13. 当日标签推送数
|
||||
14. 当日扫描数
|
||||
15. 数据拉取时间(UTC_5)
|
||||
16. 当天换单完成率
|
||||
17. 24H换单率
|
||||
|
||||
---
|
||||
|
||||
## 修改步骤
|
||||
|
||||
### 第1步:分析当前输出
|
||||
当前输出包含以下多余字段:
|
||||
- 16点前考核通过包裹数 ❌
|
||||
- 16点后考核通过包裹数 ❌
|
||||
- 低标签率考核通过包裹数 ❌
|
||||
- 低标签率24H完成数 ❌
|
||||
- 高标签率考核通过数 ❌
|
||||
- 高标签率应该换单数 ❌
|
||||
- 低标签率应该换单数 ❌
|
||||
- 考核通过总数 ❌
|
||||
|
||||
**共8个多余字段需要删除**
|
||||
|
||||
### 第2步:修改SQL查询
|
||||
**位置**:LabelReplaceRepository.cs 第1173-1206行
|
||||
|
||||
**任务**:
|
||||
1. 从外层SELECT中删除8个多余字段
|
||||
2. 保留17个核心字段
|
||||
3. 保持聚合函数和逻辑正确
|
||||
|
||||
**修改前**(当前状态):
|
||||
```sql
|
||||
SELECT
|
||||
日期,
|
||||
MAX(当日新增换单数) AS 当日新增换单数,
|
||||
MAX(16点前到仓包裹数) AS 16点前到仓包裹数,
|
||||
MAX(16点后到仓包裹数) AS 16点后到仓包裹数,
|
||||
MAX(累计要换的总单数) AS 累计要换的总单数,
|
||||
MAX(当天应该换单数) AS 当天应该换单数,
|
||||
MAX(换单失败未完结订单) AS 换单失败未完结订单,
|
||||
MAX(当日换单失败) AS 当日换单失败,
|
||||
MAX(当日换单成功数) AS 当日换单成功数,
|
||||
MAX(当日STOP数) AS 当日STOP数,
|
||||
MAX(24H内完成数) AS 24H内完成数,
|
||||
MAX(当日完成数) AS 当日完成数,
|
||||
MAX(当日标签推送数) AS 当日标签推送数,
|
||||
MAX(当日扫描数) AS 当日扫描数,
|
||||
MAX(数据拉取时间(UTC_5)) AS 数据拉取时间(UTC_5),
|
||||
MAX(16点前考核通过包裹数) AS 16点前考核通过包裹数, -- ❌ 删除
|
||||
MAX(16点后考核通过包裹数) AS 16点后考核通过包裹数, -- ❌ 删除
|
||||
MAX(低标签率考核通过包裹数) AS 低标签率考核通过包裹数, -- ❌ 删除
|
||||
MAX(低标签率24H完成数) AS 低标签率24H完成数, -- ❌ 删除
|
||||
MAX(高标签率考核通过数) AS 高标签率考核通过数, -- ❌ 删除
|
||||
MAX(高标签率应该换单数) AS 高标签率应该换单数, -- ❌ 删除
|
||||
MAX(低标签率应该换单数) AS 低标签率应该换单数, -- ❌ 删除
|
||||
(MAX(16点前考核通过包裹数) + MAX(16点后考核通过包裹数) + MAX(低标签率考核通过包裹数)) AS 考核通过总数, -- ❌ 删除
|
||||
CASE
|
||||
WHEN MAX(当天应该换单数) = 0 THEN '0.00%'
|
||||
ELSE CONCAT(ROUND(
|
||||
MAX(当日完成数) / MAX(当天应该换单数) * 100, 2), '%')
|
||||
END AS 当天换单完成率,
|
||||
CASE
|
||||
WHEN MAX(高标签率应该换单数) = 0 THEN '0.00%'
|
||||
ELSE CONCAT(ROUND(
|
||||
MAX(高标签率考核通过数) / MAX(高标签率应该换单数) * 100, 2), '%')
|
||||
END AS 24H换单率
|
||||
```
|
||||
|
||||
**修改后**(精简版):
|
||||
```sql
|
||||
SELECT
|
||||
日期,
|
||||
MAX(当日新增换单数) AS 当日新增换单数,
|
||||
MAX(16点前到仓包裹数) AS 16点前到仓包裹数,
|
||||
MAX(16点后到仓包裹数) AS 16点后到仓包裹数,
|
||||
MAX(累计要换的总单数) AS 累计要换的总单数,
|
||||
MAX(当天应该换单数) AS 当天应该换单数,
|
||||
MAX(换单失败未完结订单) AS 换单失败未完结订单,
|
||||
MAX(当日换单失败) AS 当日换单失败,
|
||||
MAX(当日换单成功数) AS 当日换单成功数,
|
||||
MAX(当日STOP数) AS 当日STOP数,
|
||||
MAX(24H内完成数) AS 24H内完成数,
|
||||
MAX(当日完成数) AS 当日完成数,
|
||||
MAX(当日标签推送数) AS 当日标签推送数,
|
||||
MAX(当日扫描数) AS 当日扫描数,
|
||||
MAX(数据拉取时间(UTC_5)) AS 数据拉取时间(UTC_5),
|
||||
CASE
|
||||
WHEN MAX(当天应该换单数) = 0 THEN '0.00%'
|
||||
ELSE CONCAT(ROUND(
|
||||
MAX(当日完成数) / MAX(当天应该换单数) * 100, 2), '%')
|
||||
END AS 当天换单完成率,
|
||||
CASE
|
||||
WHEN MAX(高标签率应该换单数) = 0 THEN '0.00%'
|
||||
ELSE CONCAT(ROUND(
|
||||
MAX(高标签率考核通过数) / MAX(高标签率应该换单数) * 100, 2), '%')
|
||||
END AS 24H换单率
|
||||
```
|
||||
|
||||
**注意**:
|
||||
- 24H换单率的分母`高标签率应该换单数`和分子`高标签率考核通过数`虽然不在显示字段中,但仍需要在内层SELECT中保留,以供外层计算使用
|
||||
- 删除的8个字段从外层SELECT中移除,但内层SELECT仍需保留用于计算
|
||||
|
||||
### 第3步:编译验证
|
||||
**任务**:运行编译验证修改后的代码
|
||||
```bash
|
||||
dotnet build src/DAL/DAL.csproj
|
||||
```
|
||||
|
||||
**预期结果**:编译成功(exit code: 0)
|
||||
|
||||
---
|
||||
|
||||
## 实施步骤总结
|
||||
|
||||
| 步骤 | 操作 | 状态 |
|
||||
|------|------|------|
|
||||
| 1 | 从外层SELECT删除8个多余字段 | 待执行 |
|
||||
| 2 | 保留17个核心字段 | 待执行 |
|
||||
| 3 | 编译验证 | 待执行 |
|
||||
|
||||
---
|
||||
|
||||
## 关键要点
|
||||
|
||||
1. **只改外层SELECT**:删除多余字段从显示层面,内层仍需保留用于24H换单率计算
|
||||
2. **保持逻辑正确**:24H换单率的两个变量`高标签率应该换单数`和`高标签率考核通过数`需要在内层继续计算
|
||||
3. **ONLY_FULL_GROUP_BY兼容**:所有内层字段都用MAX()包装,符合GROUP BY要求
|
||||
|
||||
Reference in New Issue
Block a user