fd65ae16
“wangming”
feat: inventory a...
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
|
# 科技部驾驶舱 GetStatistics 接口新增字段可行性分析
## 需求概述
在 `api/Extend/LqTechDepartmentDashboard/GetStatistics` 接口中增加返回以下字段:
1. **开单** - 科美开单金额
2. **储扣** - 科美开单的储扣金额
3. **退款** - 科美退卡金额
4. **消耗** - 科技部老师消耗业绩
5. **手工费** - 科技部老师手工费
## 字段可行性分析
### 1. 开单(科美开单金额)✅ **可以实现**
**数据来源**:
- 表:`lq_kd_kdjlb`(开单记录表)
- 字段:`sfyj`(实付业绩)
**筛选条件**:
- 需要筛选科美开单,有两种方式:
1. **方式1(推荐)**:通过关联 `lq_kd_kjbsyj`(开单科技部老师业绩表),筛选 `ItemCategory = '科美'`
2. **方式2**:通过关联 `lq_kd_jksyj`(开单金三角业绩表),筛选科美类型
**SQL 示例**:
```sql
SELECT COALESCE(SUM(billing.sfyj), 0) as BillingAmount
FROM lq_kd_kdjlb billing
INNER JOIN lq_kd_kjbsyj kjbsyj ON billing.F_Id = kjbsyj.glkdbh
WHERE billing.F_IsEffective = 1
AND kjbsyj.F_IsEffective = 1
AND kjbsyj.ItemCategory = '科美'
AND billing.djmd IN ('门店ID列表')
AND billing.kdrq >= '开始时间'
AND billing.kdrq <= '结束时间'
```
**参考实现**:
- 当前接口已统计溯源和Cell的开单金额,但没有统计总的科美开单金额
- 可以参考 `LqStoreDashboardService.GetStatistics` 中开单业绩的统计方式
---
### 2. 储扣(科美开单的储扣金额)✅ **可以实现**
**数据来源**:
- 表:`lq_kd_deductinfo`(开单扣减信息表)
- 字段:`F_Amount`(扣减金额)
**筛选条件**:
- 关联 `lq_kd_kdjlb` 获取开单信息
- 关联 `lq_xmzl`(项目资料表)筛选 `qt2 = '科美'`
- 筛选条件:`F_IsEffective = 1`,门店在指定范围内,时间范围
**SQL 示例**:
```sql
SELECT COALESCE(SUM(deduct.F_Amount), 0) as DeductAmount
FROM lq_kd_deductinfo deduct
INNER JOIN lq_kd_kdjlb billing ON deduct.F_BillingId = billing.F_Id
LEFT JOIN lq_xmzl item ON deduct.F_ItemId = item.F_Id AND item.F_IsEffective = 1
WHERE deduct.F_IsEffective = 1
AND billing.F_IsEffective = 1
AND COALESCE(item.qt2, '其他') = '科美'
AND billing.djmd IN ('门店ID列表')
AND COALESCE(deduct.F_BillingTime, billing.kdrq) >= '开始时间'
AND COALESCE(deduct.F_BillingTime, billing.kdrq) <= '结束时间'
```
**参考实现**:
- 可以参考 `LqStoreDashboardService.GetStatistics` 中储扣统计的实现(第244-267行)
- 该实现已经包含了按品项分类统计储扣金额的逻辑
---
### 3. 退款(科美退卡金额)✅ **可以实现**
**数据来源**:
- 表:`lq_hytk_hytk`(退卡记录表)
- 字段:`ActualRefundAmount`(实际退卡金额)或 `tkje`(退卡金额)
**筛选条件**:
- 需要筛选科美退卡,通过关联 `lq_hytk_kjbsyj`(退卡科技部老师业绩表),筛选 `ItemCategory = '科美'`
- 或者通过关联 `lq_hytk_jksyj`(退卡金三角业绩表),筛选科美类型
**SQL 示例**:
```sql
SELECT COALESCE(SUM(COALESCE(refund.ActualRefundAmount, refund.tkje, 0)), 0) as RefundAmount
FROM lq_hytk_hytk refund
INNER JOIN lq_hytk_kjbsyj kjbsyj ON refund.F_Id = kjbsyj.gltkbh
WHERE refund.F_IsEffective = 1
AND kjbsyj.F_IsEffective = 1
AND kjbsyj.ItemCategory = '科美'
AND refund.md IN ('门店ID列表')
AND refund.tksj >= '开始时间'
AND refund.tksj <= '结束时间'
```
**参考实现**:
- 当前接口已统计溯源和Cell的退卡金额,但没有统计总的科美退卡金额
- 可以参考 `LqShareStatisticsTechDeptService` 中科美退卡的统计方式(第500-521行)
---
### 4. 消耗(科技部老师消耗业绩)✅ **可以实现**
**数据来源**:
- 表:`lq_xh_kjbsyj`(耗卡科技部老师业绩表)
- 字段:`kjblsyj`(科技部老师业绩)
**筛选条件**:
- `ItemCategory = '科美'`
- `F_IsEffective = 1`
- 门店在指定范围内
- 时间范围:`yjsj >= 开始时间 AND yjsj <= 结束时间`
**SQL 示例**:
```sql
SELECT COALESCE(SUM(kjbsyj.kjblsyj), 0) as ConsumeAmount
FROM lq_xh_kjbsyj kjbsyj
WHERE kjbsyj.F_IsEffective = 1
AND kjbsyj.ItemCategory = '科美'
AND kjbsyj.F_StoreId IN ('门店ID列表')
AND kjbsyj.yjsj >= '开始时间'
AND kjbsyj.yjsj <= '结束时间'
```
**参考实现**:
- 可以参考 `LqShareStatisticsTechDeptService` 中消耗业绩的统计方式
- 注意:`lq_xh_kjbsyj` 表有 `F_StoreId` 字段,可以直接筛选门店
---
### 5. 手工费(科技部老师手工费)✅ **可以实现**
**数据来源**:
- 表:`lq_xh_kjbsyj`(耗卡科技部老师业绩表)
- 字段:`F_LaborCost`(手工费)
**筛选条件**:
- `ItemCategory = '科美'`
- `F_IsEffective = 1`
- 门店在指定范围内
- 时间范围:`yjsj >= 开始时间 AND yjsj <= 结束时间`
**SQL 示例**:
```sql
SELECT COALESCE(SUM(kjbsyj.F_LaborCost), 0) as HandworkFee
FROM lq_xh_kjbsyj kjbsyj
WHERE kjbsyj.F_IsEffective = 1
AND kjbsyj.ItemCategory = '科美'
AND kjbsyj.F_StoreId IN ('门店ID列表')
AND kjbsyj.yjsj >= '开始时间'
AND kjbsyj.yjsj <= '结束时间'
```
**参考实现**:
- 可以参考 `LqShareStatisticsTechDeptService` 中手工费的统计方式(第316-322行)
- 该实现已经包含了科技部手工费的统计逻辑
---
## 总结
### ✅ 所有字段都可以实现
| 字段 | 数据来源表 | 关键字段 | 筛选条件 | 参考实现 |
|------|-----------|---------|---------|---------|
| **开单** | `lq_kd_kdjlb` + `lq_kd_kjbsyj` | `sfyj` | `ItemCategory = '科美'` | `LqStoreDashboardService` |
| **储扣** | `lq_kd_deductinfo` + `lq_kd_kdjlb` + `lq_xmzl` | `F_Amount` | `qt2 = '科美'` | `LqStoreDashboardService` |
| **退款** | `lq_hytk_hytk` + `lq_hytk_kjbsyj` | `ActualRefundAmount` / `tkje` | `ItemCategory = '科美'` | `LqShareStatisticsTechDeptService` |
| **消耗** | `lq_xh_kjbsyj` | `kjblsyj` | `ItemCategory = '科美'` | `LqShareStatisticsTechDeptService` |
| **手工费** | `lq_xh_kjbsyj` | `F_LaborCost` | `ItemCategory = '科美'` | `LqShareStatisticsTechDeptService` |
### 注意事项
1. **时间范围**:所有统计都使用 `startDate` 到 `endDateTime` 的时间范围
2. **门店筛选**:通过 `storeIds` 列表筛选,这些门店已经通过 `lq_md_target` 表确定了科技部归属
3. **有效性筛选**:所有查询都需要加上 `F_IsEffective = 1` 的条件
4. **科美类型判断**:
- 开单和退卡:通过关联的业绩表(`lq_kd_kjbsyj`、`lq_hytk_kjbsyj`)的 `ItemCategory` 字段判断
- 储扣:通过关联的 `lq_xmzl` 表的 `qt2` 字段判断
- 消耗和手工费:直接使用 `lq_xh_kjbsyj` 表的 `ItemCategory` 字段判断
### 建议实现顺序
1. 先实现**消耗**和**手工费**(最简单,直接查询 `lq_xh_kjbsyj` 表)
2. 再实现**开单**(需要关联 `lq_kd_kjbsyj` 表)
3. 然后实现**退款**(需要关联 `lq_hytk_kjbsyj` 表)
4. 最后实现**储扣**(需要关联多个表,逻辑相对复杂)
|