147 lines
5.5 KiB
Markdown
147 lines
5.5 KiB
Markdown
# 简化日级报表输出字段 - 计划
|
||
|
||
**目标**:精简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要求
|
||
|