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
|
# 门店驾驶舱储扣分析接口实现说明
## 一、实现内容
### 1. DTO字段扩展
在 `StoreDashboardStatisticsOutput` 中添加了以下储扣相关字段:
#### 基础指标
- `DeductAmount`:储扣总金额
- `DeductCount`:储扣次数(按开单计数,有储扣的开单数)
- `DeductDetailCount`:储扣明细次数(储扣明细记录数)
- `DeductMemberCount`:储扣会员数(去重后的使用储扣的会员数)
#### 比率指标
- `DeductPenetrationRate`:储扣渗透率(有储扣的开单数/总开单数 × 100%)
- `DeductAmountRatio`:储扣金额占比(储扣金额/整单业绩 × 100%)
- `AvgDeductAmount`:平均储扣金额(储扣总金额/储扣次数)
#### 分类统计
- `LifeBeautyDeductAmount`:生美储扣金额
- `MedicalBeautyDeductAmount`:医美储扣金额
- `TechBeautyDeductAmount`:科美储扣金额
- `ProductDeductAmount`:产品储扣金额
#### 类型统计
- `StorageCardDeductAmount`:储值卡类型储扣金额
- `ItemDeductAmount`:品项类型储扣金额
---
## 二、统计逻辑
### 1. 数据源
- **主表**:`lq_kd_deductinfo`(开单扣减信息表)
- **关联表**:
- `lq_kd_kdjlb`(开单记录表):获取门店、开单时间、会员等信息
- `lq_xmzl`(品项资料表):获取品项分类(qt2字段)
### 2. 查询条件
```sql
WHERE deduct.F_IsEffective = 1
AND billing.F_IsEffective = 1
AND billing.djmd = '{StoreId}'
AND COALESCE(deduct.F_BillingTime, billing.kdrq) >= '{startDate}'
AND COALESCE(deduct.F_BillingTime, billing.kdrq) <= '{endDateTime}'
```
**关键点**:
- 时间字段优先使用 `deduct.F_BillingTime`,如果为空则使用 `billing.kdrq`
- 如果是当月,`endDateTime` 使用 `DateTime.Now`,与门店驾驶舱其他指标保持一致
- 必须同时过滤 `deduct.F_IsEffective = 1` 和 `billing.F_IsEffective = 1`
### 3. 计算逻辑
#### 储扣渗透率
```
储扣渗透率 = (有储扣的开单数 / 总开单数) × 100%
```
#### 储扣金额占比
```
储扣金额占比 = (储扣金额 / 整单业绩) × 100%
```
**注意**:整单业绩(zdyj)需要单独查询,不能使用实付业绩(sfyj)
#### 平均储扣金额
```
平均储扣金额 = 储扣总金额 / 储扣次数
```
---
## 三、验证数据
### 测试门店:绿纤南湖店(ID: 1649328471923847193)
### 测试月份:202601
#### 数据库查询结果
- **储扣总金额**:24,779.73
- **储扣次数**:26(开单数)
- **储扣明细次数**:30(明细记录数)
- **储扣会员数**:19
- **总开单数**:90
- **整单业绩**:112,205.48
#### 分类统计
- **生美储扣**:6,803.53
- **医美储扣**:509.90
- **科美储扣**:17,466.30
- **产品储扣**:0.00
#### 类型统计
- **储值卡类型**:3,300.00
- **品项类型**:21,479.73
#### 计算指标
- **储扣渗透率**:28.89% (26/90)
- **储扣金额占比**:22.08% (24,779.73/112,205.48)
- **平均储扣金额**:953.07 (24,779.73/26)
---
## 四、接口调用
### 接口地址
```
POST /api/Extend/LqStoreDashboard/GetStatistics
```
### 请求参数
```json
{
"storeId": "1649328471923847193",
"statisticsMonth": "202601"
}
```
### 响应示例
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"BillingPerformance": 22728.0,
"ConsumePerformance": 55634.56,
"DeductAmount": 24779.73,
"DeductCount": 26,
"DeductDetailCount": 30,
"DeductPenetrationRate": 28.89,
"DeductAmountRatio": 22.08,
"AvgDeductAmount": 953.07,
"DeductMemberCount": 19,
"LifeBeautyDeductAmount": 6803.53,
"MedicalBeautyDeductAmount": 509.90,
"TechBeautyDeductAmount": 17466.30,
"ProductDeductAmount": 0.00,
"StorageCardDeductAmount": 3300.00,
"ItemDeductAmount": 21479.73
}
}
```
---
## 五、注意事项
1. **服务重启**:代码修改后需要重启后端服务才能生效
2. **时间字段**:优先使用 `deduct.F_BillingTime`,如果为空则使用 `billing.kdrq`
3. **当月处理**:如果是当月,`endDateTime` 应该使用 `DateTime.Now`,与门店驾驶舱其他指标保持一致
4. **有效性过滤**:必须同时过滤 `deduct.F_IsEffective = 1` 和 `billing.F_IsEffective = 1`
5. **金额处理**:使用 `COALESCE(deduct.F_Amount, 0)` 处理空值
---
## 六、测试脚本
|