# 科技部驾驶舱数据分析梳理
## 📋 概述
本文档梳理科技部驾驶舱可以统计分析的数据维度。科技部分为**科技一部**和**科技二部**,主要关注科美项目(溯源和Cell)的业绩数据。
**重要说明**:这是**科技部维度**的驾驶舱,数据统计按照科技部(一部/二部)进行,不涉及总经理维度。
### ⚠️ 重要说明:月份维度
**所有统计数据都必须按月份统计,且不同月份科技部管理的门店可能不一致。**
1. **月份是核心维度**:所有指标、排行、趋势、对比等数据都必须按月份统计,不能跨月汇总(除非明确说明是累计数据)
2. **门店归属按月变化**:门店的科技部归属关系存储在 `lq_md_target` 表中,通过 `F_TechDepartment` 字段(BASE_ORGANIZE表的组织ID)和 `F_Month` 字段(YYYYMM格式)区分不同月份
3. **数据筛选规则**:
- 查询指定月份的统计数据时,必须先从 `lq_md_target` 表获取该月份、该科技部归属的门店列表(`F_TechDepartment = @科技部ID`(BASE_ORGANIZE表的组织ID),`F_Month = @统计月份`)
- 然后使用该门店列表筛选业绩数据,确保只统计该月份归属该科技部的门店
- 业绩数据的时间过滤使用业绩时间字段(`yjsj`、`hksj`、`tksj`)按月份过滤
4. **趋势分析**:虽然趋势图展示多个月份,但每个月份的数据都是独立计算的,使用该月份的门店归属关系
---
## 🎯 一、核心业务指标(关键指标卡片)
### 1.1 整体业绩指标
#### 1.1.1 溯源金额
- **说明**:管理的所有门店中,品项的 `F_BeautyType` 为 "溯源系统" 或 "溯源" 的健康师业绩总和
- **计算方式**:开单溯源金额 - 退卡溯源金额
- **数据来源**:
- 开单:`lq_kd_jksyj` 表(`F_BeautyType` = '溯源系统' 或 '溯源')
- 退卡:`lq_hytk_jksyj` 表(`F_BeautyType` = '溯源系统' 或 '溯源')
- **时间维度**:**必须按月份统计**(YYYYMM格式)
- **门店筛选**:使用 `lq_md_target` 表获取指定月份(`F_Month`)、指定科技部(`F_TechDepartment`)归属的门店列表
- **时间过滤**:使用业绩时间字段(`yjsj`、`tksj`)按月份过滤
- **对比维度**:环比(与上月对比)、同比(与去年同月对比)
#### 1.1.2 Cell金额
- **说明**:管理的所有门店中,品项的 `F_BeautyType` 为 "cell" 或 "Cell" 的健康师业绩总和
- **计算方式**:开单Cell金额 - 退卡Cell金额
- **数据来源**:
- 开单:`lq_kd_jksyj` 表(`F_BeautyType` = 'cell' 或 'Cell')
- 退卡:`lq_hytk_jksyj` 表(`F_BeautyType` = 'cell' 或 'Cell')
- **时间维度**:**必须按月份统计**(YYYYMM格式)
- **门店筛选**:使用 `lq_md_target` 表获取指定月份(`F_Month`)、指定科技部(`F_TechDepartment`)归属的门店列表
- **时间过滤**:使用业绩时间字段(`yjsj`、`tksj`)按月份过滤
- **对比维度**:环比(与上月对比)、同比(与去年同月对比)
#### 1.1.3 科美总收入(溯源 + Cell)
- **说明**:管理的所有门店的科美项目总收入
- **计算方式**:溯源金额 + Cell金额
- **用途**:用于股份统计中的收入计算(收入的30%)
#### 1.1.4 管理的门店数
- **说明**:指定月份归属该科技部的门店总数
- **数据来源**:`lq_md_target` 表
- **计算方式**:
```sql
SELECT COUNT(DISTINCT F_StoreId)
FROM lq_md_target
WHERE F_TechDepartment = @科技部ID -- BASE_ORGANIZE表的组织ID(F_Id)
AND F_Month = @统计月份
```
- **重要说明**:**必须按月份统计**,不同月份管理的门店数量可能不同
#### 1.1.5 活跃门店数
- **说明**:指定月份归属该科技部的门店中,有科美开单或消耗的门店数量
- **计算方式**:
1. 先从 `lq_md_target` 表获取指定月份、指定科技部归属的门店列表
2. 统计这些门店中,在指定月份有科美开单或消耗的门店数量(去重)
- **时间维度**:**必须按月份统计**
---
### 1.2 股份相关指标(基于股份统计表)
#### 1.2.1 收入
- **说明**:管理的门店科美开单的30%(需减去退款)
- **计算公式**:(科美开单金额 - 科美退卡金额) × 30%
- **数据来源**:
- 开单:`lq_kd_pxmx` 表(`F_BeautyType` = 科美)关联 `lq_kd_kdjlb`
- 退卡:`lq_hytk_jksyj` 或 `lq_hytk_hytk` 表
- **时间维度**:**必须按月份统计**
- **门店筛选**:使用 `lq_md_target` 表获取指定月份、指定科技部归属的门店列表
#### 1.2.2 成本-报销
- **说明**:报销费用里面的"科技部报销"
- **数据来源**:`lq_reimbursement_application`、`lq_reimbursement_category` 表
- **筛选条件**:
- 一级分类为"科技部报销"
- 根据申请门店的归属区分一部/二部
- **必须按月份统计**,根据报销申请时间或审批时间按月份过滤
#### 1.2.3 成本-人工
- **科技部老师底薪**:`lq_tech_teacher_salary_statistics` 表的 `F_ActualBaseSalary`(**按 `F_StatisticsMonth` 字段过滤**)
- **科技部老师手工费**:`lq_xh_kjbsyj` 表的 `F_LaborCost`(`F_BeautyType` = 科美,**按消耗时间 `hksj` 按月份过滤**)
- **科技部老师开单提成**:`lq_tech_teacher_salary_statistics` 表的开单提成字段(**按 `F_StatisticsMonth` 字段过滤**)
- **科技部老师消耗提成**:`lq_tech_teacher_salary_statistics` 表的消耗提成字段(**按 `F_StatisticsMonth` 字段过滤**)
- **科技部总经理底薪**:`lq_tech_general_manager_salary_statistics` 表的 `F_BaseSalary`(固定4000元,**按 `F_StatisticsMonth` 字段过滤**,需要汇总该科技部所有总经理的底薪)
- **科技部总经理提成**:`lq_tech_general_manager_salary_statistics` 表的提成字段(溯源提成 + Cell提成,**按 `F_StatisticsMonth` 字段过滤**,需要汇总该科技部所有总经理的提成)
- **重要说明**:
- 所有人工成本数据都**必须按月份统计**,使用工资统计表的 `F_StatisticsMonth` 字段或消耗表的消耗时间字段进行过滤
- 总经理相关的成本需要汇总该科技部所有总经理的数据(可通过岗位字段 `F_GW` 关联 `BASE_USER` 表识别科技部总经理)
#### 1.2.4 利润
- **计算公式**:利润 = 收入 - 成本报销 - 成本人工(所有人工成本项)
- **数据来源**:`lq_share_statistics_tech_dept` 表
---
## 📊 二、趋势分析数据
### 2.1 业绩趋势
#### 2.1.1 溯源金额趋势
- **时间维度**:近12个月、近6个月、近3个月、当月
- **图表类型**:折线图
- **指标**:月度溯源金额、累计溯源金额
- **对比**:支持环比、同比对比
#### 2.1.2 Cell金额趋势
- **时间维度**:近12个月、近6个月、近3个月、当月
- **图表类型**:折线图
- **指标**:月度Cell金额、累计Cell金额
- **对比**:支持环比、同比对比
#### 2.1.3 科美总收入趋势
- **时间维度**:近12个月、近6个月、近3个月、当月
- **图表类型**:折线图
- **指标**:月度总收入、累计总收入
#### 2.1.4 溯源与Cell对比趋势
- **图表类型**:双折线图
- **指标**:溯源金额 vs Cell金额
- **用途**:分析两种类型的业绩占比变化
### 2.2 股份趋势
#### 2.2.1 收入趋势
- **时间维度**:近12个月、近6个月、近3个月、当月
- **图表类型**:折线图
- **指标**:月度收入、累计收入
#### 2.2.2 成本趋势
- **时间维度**:近12个月、近6个月、近3个月、当月
- **图表类型**:堆叠柱状图
- **指标**:
- 成本-报销
- 成本-人工-老师底薪
- 成本-人工-老师手工费
- 成本-人工-老师开单提成
- 成本-人工-老师消耗提成
- 成本-人工-总经理底薪
- 成本-人工-总经理提成
#### 2.2.3 利润趋势
- **时间维度**:近12个月、近6个月、近3个月、当月
- **图表类型**:折线图或面积图
- **指标**:月度利润、累计利润、利润率
---
## 🏪 三、门店分析数据
### 3.1 门店业绩排行
#### 3.1.1 门店溯源金额排行
- **排序方式**:按溯源金额降序
- **展示字段**:门店名称、溯源金额、占比、排名
- **图表类型**:条形图、表格
- **筛选条件**:支持按月份筛选
#### 3.1.2 门店Cell金额排行
- **排序方式**:按Cell金额降序
- **展示字段**:门店名称、Cell金额、占比、排名
- **图表类型**:条形图、表格
- **筛选条件**:支持按月份筛选
#### 3.1.3 门店科美总收入排行
- **排序方式**:按科美总收入降序
- **展示字段**:门店名称、科美总收入、占比、排名
- **图表类型**:条形图、表格
- **筛选条件**:支持按月份筛选
### 3.2 门店业绩明细
#### 3.2.1 门店业绩分布
- **图表类型**:饼图或环形图
- **展示内容**:各门店的溯源金额、Cell金额占比
- **用途**:了解门店业绩贡献度分布
#### 3.2.2 门店业绩对比
- **图表类型**:柱状图或折线图
- **展示内容**:多个门店的溯源金额、Cell金额对比
- **支持功能**:多门店选择对比
---
## 👥 四、人员分析数据
**说明**:科技部驾驶舱是科技部维度,不涉及总经理维度的统计。人员分析主要关注科技部老师的业绩情况。总经理相关的数据只在成本统计中作为人工成本的一部分进行汇总。
**注意**:虽然科技部有总经理,但驾驶舱数据统计是按科技部维度,不按总经理维度。总经理的成本数据会汇总到人工成本中,但不单独展示总经理业绩。
### 4.1 科技部老师业绩
#### 4.1.1 老师业绩排行
- **排序方式**:按总业绩或消耗业绩降序
- **展示字段**:
- 老师姓名、所属门店
- 开单业绩、消耗业绩、退卡业绩
- 总业绩、项目数
- 底薪、业绩提成、消耗提成
- 应发工资
- **数据来源**:`lq_tech_teacher_salary_statistics` 表
- **筛选条件**:支持按月份、门店筛选
#### 4.1.2 老师业绩分布
- **图表类型**:饼图或环形图
- **展示内容**:各老师的业绩占比
- **用途**:了解老师业绩贡献度分布
#### 4.1.3 老师业绩趋势
- **图表类型**:折线图
- **展示内容**:指定老师的近12个月业绩趋势
- **支持功能**:多老师选择对比
---
## 📈 五、运营分析数据
### 5.1 开单分析
#### 5.1.1 开单次数
- **说明**:管理的门店科美项目开单总次数
- **数据来源**:`lq_kd_kdjlb` 表关联 `lq_kd_pxmx` 表(`F_BeautyType` = 科美)
- **时间维度**:按月统计
- **对比维度**:环比、同比
#### 5.1.2 平均开单金额
- **计算公式**:科美总收入 / 开单次数
- **时间维度**:按月统计
#### 5.1.3 开单门店分布
- **图表类型**:饼图
- **展示内容**:各门店的开单次数占比
### 5.2 消耗分析
#### 5.2.1 消耗次数
- **说明**:管理的门店科美项目消耗总次数
- **数据来源**:`lq_xh_hyhk` 表关联 `lq_xh_pxmx` 表(`F_BeautyType` = 科美)
- **时间维度**:按月统计
#### 5.2.2 消耗金额
- **说明**:管理的门店科美项目消耗总金额
- **数据来源**:`lq_xh_hyhk` 表关联 `lq_xh_pxmx` 表
- **时间维度**:按月统计
#### 5.2.3 消耗率
- **计算公式**:消耗金额 / 开单金额 × 100%
- **用途**:分析业绩转化情况
### 5.3 退卡分析
#### 5.3.1 退卡次数
- **说明**:管理的门店科美项目退卡总次数
- **数据来源**:`lq_hytk_hytk` 表关联退卡明细(科美项目)
- **时间维度**:按月统计
#### 5.3.2 退卡金额
- **说明**:管理的门店科美项目退卡总金额
- **数据来源**:`lq_hytk_hytk` 表关联退卡明细(科美项目)
- **时间维度**:按月统计
#### 5.3.3 退卡率
- **计算公式**:退卡金额 / 开单金额 × 100%
- **用途**:分析退卡情况,评估风险
---
## 🔍 六、对比分析数据
### 6.1 时间对比
#### 6.1.1 环比对比
- **对比指标**:溯源金额、Cell金额、科美总收入、收入、成本、利润
- **计算方式**:(当月 - 上月) / 上月 × 100%
- **展示方式**:数值 + 百分比 + 箭头(上升/下降)
#### 6.1.2 同比对比
- **对比指标**:溯源金额、Cell金额、科美总收入、收入、成本、利润
- **计算方式**:(当月 - 去年同月) / 去年同月 × 100%
- **展示方式**:数值 + 百分比 + 箭头(上升/下降)
### 6.2 部门对比
#### 6.2.1 科技一部 vs 科技二部
- **对比指标**:
- 溯源金额、Cell金额、科美总收入
- 管理的门店数、活跃门店数
- 收入、成本、利润
- 总经理数量、老师数量
- **图表类型**:柱状图、折线图
- **用途**:了解两个部门的业绩对比
### 6.3 门店类型对比
#### 6.3.1 按门店类型分组统计
- **分组维度**:门店类型(200平/旗舰店)、门店类别(A/B/C类)
- **统计指标**:溯源金额、Cell金额、科美总收入
- **图表类型**:柱状图、饼图
- **用途**:分析不同门店类型的业绩表现
---
## 📋 七、明细数据列表
### 7.1 门店明细列表
#### 7.1.1 管理的门店列表
- **展示字段**:
- 门店名称、门店类型、门店类别
- 归属月份
- 溯源金额(开单、退卡、净额)
- Cell金额(开单、退卡、净额)
- 科美总收入
- 开单次数、消耗次数、退卡次数
- **功能**:支持排序、筛选、导出
### 7.2 老师明细列表
#### 7.2.1 科技部老师列表
- **展示字段**:
- 老师姓名、所属门店、老师账号
- 开单业绩、消耗业绩、退卡业绩
- 总业绩、项目数
- 底薪、业绩提成、消耗提成、应发工资
- **功能**:支持排序、筛选、导出
- **数据来源**:`lq_tech_teacher_salary_statistics` 表
### 7.3 开单明细列表
#### 7.3.1 科美开单明细
- **展示字段**:
- 开单日期、门店名称、会员姓名
- 品项名称、科美类型(溯源/Cell)
- 开单金额、实付金额
- 健康师、科技部老师
- **功能**:支持排序、筛选、导出、分页
- **数据来源**:`lq_kd_kdjlb` 表关联 `lq_kd_pxmx` 表
### 7.4 消耗明细列表
#### 7.4.1 科美消耗明细
- **展示字段**:
- 消耗日期、门店名称、会员姓名
- 品项名称、科美类型(溯源/Cell)
- 消耗金额、消耗次数
- 健康师、科技部老师
- **功能**:支持排序、筛选、导出、分页
- **数据来源**:`lq_xh_hyhk` 表关联 `lq_xh_pxmx` 表
---
## 🎨 八、数据可视化建议
### 8.1 核心指标卡片(顶部)
- 溯源金额(当月、环比、同比)
- Cell金额(当月、环比、同比)
- 科美总收入(当月、环比、同比)
- 管理的门店数
- 活跃门店数
- 收入(当月、环比、同比)
- 成本(当月、环比、同比)
- 利润(当月、环比、同比、利润率)
### 8.2 趋势图表区域
- 业绩趋势(溯源、Cell、总收入)- 折线图
- 股份趋势(收入、成本、利润)- 折线图/堆叠柱状图
- 溯源与Cell对比趋势 - 双折线图
### 8.3 排行图表区域
- 门店业绩排行(溯源、Cell、总收入)- 条形图
- 老师业绩排行 - 条形图或表格
### 8.4 分布图表区域
- 门店业绩分布 - 饼图/环形图
- 老师业绩分布 - 饼图/环形图
- 成本结构分布 - 饼图/堆叠柱状图
### 8.5 对比图表区域
- 科技一部 vs 科技二部对比 - 柱状图
- 门店类型对比 - 柱状图
### 8.6 明细列表区域
- 门店明细列表
- 老师明细列表
- 开单明细列表(可选)
- 消耗明细列表(可选)
---
## 📝 九、数据来源总结
### 9.1 核心数据表
| 数据表 | 用途 | 关键字段 |
|--------|------|---------|
| `lq_md_target` | 门店目标表(包含门店归属科技部信息) | F_StoreId, F_Month, F_TechDepartment |
| `lq_kd_jksyj` | 开单健康师业绩(溯源/Cell) | jksyj, F_BeautyType, F_StoreId, yjsj |
| `lq_hytk_jksyj` | 退卡健康师业绩(溯源/Cell) | jksyj, F_BeautyType, F_StoreId, tksj |
| `lq_kd_kdjlb` | 开单记录 | sfyj, kdrq, djmd |
| `lq_kd_pxmx` | 开单品项明细 | F_ActualPrice, F_BeautyType |
| `lq_xh_hyhk` | 消耗记录 | xfje, hksj, md |
| `lq_xh_pxmx` | 消耗品项明细 | F_BeautyType |
| `lq_hytk_hytk` | 退卡记录 | tkje, tksj, md |
| `lq_tech_general_manager_salary_statistics` | 科技部总经理工资统计 | F_TraceabilityAmount, F_CellAmount, F_BaseSalary, F_TraceabilityCommissionAmount, F_CellCommissionAmount |
| `lq_tech_teacher_salary_statistics` | 科技部老师工资统计 | F_OrderAchievement, F_ConsumeAchievement, F_TotalPerformance |
| `lq_share_statistics_tech_dept` | 科技部股份统计 | F_Income, F_CostReimbursement, F_CostTeacherBase, F_CostTeacherManual, F_CostTeacherBillingComm, F_CostTeacherConsumeComm, F_CostGMBase, F_CostGMComm, F_Profit |
| `BASE_USER` | 用户信息(科技部总经理、老师) | F_Id, F_REALNAME, F_GW, F_MDID |
### 9.2 数据关联关系
- **科技部识别**:通过 `BASE_ORGANIZE` 表的组织ID(`F_Id`)识别,而不是使用中文名称
- **管理的门店(按月获取)**:
```sql
SELECT DISTINCT F_StoreId
FROM lq_md_target
WHERE F_TechDepartment = @科技部ID -- BASE_ORGANIZE表的组织ID(F_Id)
AND F_Month = @统计月份 -- ⚠️ 必须按月份匹配,格式:YYYYMM
```
- **业绩统计**:
- 通过 `F_StoreId` 关联门店(使用上面获取的门店列表)
- 通过 `F_BeautyType` 区分溯源和Cell
- **时间过滤**:通过业绩时间字段(`yjsj`、`hksj`、`tksj`)按月份过滤
- **重要规则**:
1. **必须先获取指定月份的门店归属关系**,从 `lq_md_target` 表按 `F_TechDepartment` 和 `F_Month` 获取,再使用该门店列表筛选业绩数据
2. **不能跨月汇总**:每个月份的数据必须独立计算,使用该月份的门店归属关系
3. **趋势分析**:虽然展示多个月份,但每个月份的数据都是独立计算的
---
## 🔧 十、接口设计说明
### 10.1 接口参数设计
**科技部驾驶舱接口参数设计:兼容两种方式,既可以传入科技部ID(组织ID),也可以传入门店ID列表。**
#### 接口输入参数
```csharp
public class TechDepartmentDashboardStatisticsInput
{
///
/// 科技部ID(可选):BASE_ORGANIZE表的组织ID(F_Id)
/// 如果传入科技部ID,则从lq_md_target表查询该月份、该科技部归属的门店列表
/// 如果传入门店ID列表,则直接使用门店ID列表
/// 两者必填其一
///
public string TechDepartmentId { get; set; }
///
/// 门店ID列表(可选)
/// 如果传入科技部ID,则此字段忽略,使用科技部ID查询门店列表
/// 如果传入门店ID列表,则直接使用此列表
/// 两者必填其一
///
public List StoreIds { get; set; }
///
/// 统计月份(必填):YYYYMM格式,如:202501
///
[Required(ErrorMessage = "统计月份不能为空")]
[StringLength(6, MinimumLength = 6, ErrorMessage = "统计月份格式必须为YYYYMM")]
public string StatisticsMonth { get; set; }
}
```
#### 设计理由
**兼容两种使用场景:**
1. **科技部维度(推荐使用)**:
- 传入科技部ID(BASE_ORGANIZE表的组织ID)+ 统计月份
- 适用于科技部驾驶舱页面,用户选择科技部查看数据
- 后端根据统计月份从 `lq_md_target` 表查询该科技部归属的门店列表
- 优势:数据准确性高,门店归属变化时自动适应,使用ID而非名称,避免名称变更影响
2. **门店列表维度(灵活使用)**:
- 传入门店ID列表 + 统计月份
- 适用于其他场景,如自定义门店组合、门店对比等
- 后端直接使用传入的门店ID列表
- 优势:灵活性高,可以跨科技部组合门店
#### 参数验证逻辑
```csharp
// 参数验证
if (string.IsNullOrWhiteSpace(input.TechDepartmentId) &&
(input.StoreIds == null || !input.StoreIds.Any()))
{
throw NCCException.Oh("科技部ID和门店ID列表不能同时为空,必须传入其中一个");
}
if (!string.IsNullOrWhiteSpace(input.TechDepartmentId) &&
input.StoreIds != null && input.StoreIds.Any())
{
// 如果同时传入,优先使用科技部ID,门店ID列表将被忽略
// 或者抛出异常,要求只能传入一个
throw NCCException.Oh("科技部ID和门店ID列表不能同时传入,请只传入其中一个");
}
```
#### 后端处理流程
**方式1:传入科技部ID**
1. 接收参数:科技部ID(BASE_ORGANIZE表的组织ID)+ 统计月份
2. 查询门店列表:从 `lq_md_target` 表查询该月份、该科技部归属的门店ID列表
```sql
SELECT DISTINCT F_StoreId
FROM lq_md_target
WHERE F_TechDepartment = @科技部ID
AND F_Month = @统计月份
```
**说明**:`F_TechDepartment` 字段存储的是 `BASE_ORGANIZE` 表的组织ID(`F_Id`),而不是组织名称
3. 统计业绩数据:使用查询到的门店ID列表筛选业绩数据
4. 返回统计结果
**方式2:传入门店ID列表**
1. 接收参数:门店ID列表 + 统计月份
2. 直接使用门店ID列表(无需查询门店归属关系)
3. 统计业绩数据:使用传入的门店ID列表筛选业绩数据
4. 返回统计结果
#### 示例请求
**示例1:传入科技部ID(推荐)**
```json
{
"techDepartmentId": "1649328471923847169",
"statisticsMonth": "202501"
}
```
**说明**:`techDepartmentId` 是 `BASE_ORGANIZE` 表中科技一部或科技二部的组织ID(`F_Id`),不是中文名称。使用ID而非名称,避免中文名称变更影响接口调用。
**示例2:传入门店ID列表**
```json
{
"storeIds": ["1649328471923847169", "1649328471923847170", "1649328471923847171"],
"statisticsMonth": "202501"
}
```
#### 使用建议
- **科技部驾驶舱页面**:使用方式1(传入科技部ID),更符合业务逻辑,数据准确性高,使用ID而非名称,避免名称变更影响
- **其他场景**:使用方式2(传入门店ID列表),灵活性高,可以自定义门店组合
#### 科技部ID获取方式
科技部ID从 `BASE_ORGANIZE` 表获取,通过组织名称查询:
```sql
SELECT F_Id, F_FullName
FROM BASE_ORGANIZE
WHERE F_FullName LIKE '%科技一部%' OR F_FullName LIKE '%科技二部%'
AND F_DeleteMark IS NULL
AND F_EnabledMark = 1
```
前端可以通过组织选择器或下拉列表获取科技部ID列表,供用户选择。
---
## 🔧 十一、数据查询流程(重要)
### 11.1 标准查询流程
**所有科技部驾驶舱数据查询都必须遵循以下流程:**
#### 步骤1:确定门店列表(两种方式)
**方式1:传入科技部ID**
- 从接口参数获取科技部ID(BASE_ORGANIZE表的组织ID)和统计月份
- 从 `lq_md_target` 表查询该月份、该科技部归属的门店列表
```sql
SELECT DISTINCT F_StoreId
FROM lq_md_target
WHERE F_TechDepartment = @科技部ID -- BASE_ORGANIZE表的组织ID(F_Id)
AND F_Month = @统计月份 -- ⚠️ 必须按月份匹配,格式:YYYYMM
```
- **重要说明**:
- `F_Month` 字段格式为 YYYYMM(如:202501)
- `F_TechDepartment` 字段存储的是 `BASE_ORGANIZE` 表的组织ID(`F_Id`),而不是组织名称
- 不同月份,管理的门店列表可能不同
- 如果该月份没有归属该科技部的门店,返回空列表,所有业绩数据为0
**方式2:传入门店ID列表**
- 直接使用接口参数中的门店ID列表
- 无需查询门店归属关系,直接使用传入的门店列表
#### 步骤2:使用门店列表统计业绩数据
```sql
-- 示例:统计指定月份的溯源金额
SELECT COALESCE(SUM(CAST(jksyj AS DECIMAL(18,2))), 0) as TraceabilityAmount
FROM lq_kd_jksyj
WHERE F_IsEffective = 1
AND F_StoreId IN (@门店ID列表) -- ⚠️ 使用步骤1获取或传入的门店列表
AND (F_BeautyType = '溯源系统' OR F_BeautyType = '溯源')
AND DATE_FORMAT(yjsj, '%Y%m') = @统计月份 -- ⚠️ 按月份过滤业绩时间
```
### 11.2 趋势分析查询流程
**趋势分析虽然展示多个月份,但每个月份的数据都是独立计算的:**
```sql
-- 示例:获取近12个月的溯源金额趋势
-- 需要循环12个月,每个月都执行以下步骤:
FOR EACH 月份 IN (近12个月列表) DO
1. 获取该月份、该科技部归属的门店列表(步骤2)
2. 使用该门店列表统计该月份的溯源金额(步骤3)
3. 将结果添加到趋势数据中
END FOR
```
**重要规则**:
- 每个月份使用该月份的门店归属关系
- 不能跨月汇总,必须按月独立计算
- 如果某个月份没有管理的门店,该月份的数据为0
### 11.3 数据查询注意事项
1. **月份格式统一**:所有月份参数统一使用 YYYYMM 格式(如:202501)
2. **门店归属必须按月获取**:不能使用当前月份的门店列表去查询历史月份的数据
3. **业绩时间过滤**:使用业绩时间字段(`yjsj`、`hksj`、`tksj`)按月份过滤,格式:`DATE_FORMAT(时间字段, '%Y%m') = @统计月份`
4. **工资统计表**:使用 `F_StatisticsMonth` 字段过滤,格式:`F_StatisticsMonth = @统计月份`
5. **股份统计表**:使用 `F_StatisticsMonth` 字段过滤,格式:`F_StatisticsMonth = @统计月份`
---
## 🔧 十二、技术实现建议
### 12.1 数据聚合策略
1. **实时查询**:核心指标使用实时查询,确保数据准确性
2. **缓存优化**:对于历史月份数据,可以考虑缓存优化
3. **分页查询**:明细列表必须支持分页,避免大数据量查询
### 12.2 性能优化
1. **索引优化**:在关键查询字段上建立索引(`F_StoreId`、`F_BeautyType`、时间字段等)
2. **SQL优化**:使用聚合查询,避免在应用层进行大量数据计算
3. **数据预聚合**:可以考虑创建统计视图或物化视图
### 12.3 数据一致性
1. **统一数据源**:业绩数据统一使用健康师业绩表,确保数据一致性
2. **时间范围**:统一使用业绩时间(`yjsj`、`hksj`、`tksj`)进行时间过滤,**必须按月份过滤**
3. **归属关系(关键)**:
- **必须按月获取门店归属**:查询指定月份的统计数据时,必须先从 `lq_md_target` 表获取该月份(`F_Month`)、该科技部(`F_TechDepartment`)归属的门店列表
- **不能跨月汇总**:每个月份的数据必须独立计算,使用该月份的门店归属关系
- **趋势分析**:虽然趋势图展示多个月份,但每个月份的数据都是独立计算的,每个月份使用该月份的门店归属关系
4. **月份匹配规则**:
- 门店归属:`lq_md_target.F_Month = @统计月份 AND lq_md_target.F_TechDepartment = @科技部ID`(BASE_ORGANIZE表的组织ID)
- 业绩时间:`DATE_FORMAT(yjsj, '%Y%m') = @统计月份` 或 `DATE_FORMAT(hksj, '%Y%m') = @统计月份` 等
- 工资统计:`lq_tech_*_salary_statistics.F_StatisticsMonth = @统计月份`
- 股份统计:`lq_share_statistics_tech_dept.F_StatisticsMonth = @统计月份`
---
## ✅ 总结
科技部驾驶舱主要关注以下核心数据:
1. **业绩指标**:溯源金额、Cell金额、科美总收入
2. **股份指标**:收入、成本、利润
3. **门店分析**:管理的门店业绩排行、分布、对比
4. **人员分析**:科技部老师业绩排行(总经理成本数据汇总在人工成本中)
5. **趋势分析**:近12个月的业绩趋势、股份趋势
6. **对比分析**:环比、同比、部门对比、门店类型对比
7. **明细数据**:门店明细、老师明细、开单明细、消耗明细
### ⚠️ 核心规则
1. **所有数据必须按月份统计**:每个指标、排行、趋势、对比等数据都必须按月份(YYYYMM格式)统计
2. **门店归属按月变化**:不同月份科技部管理的门店可能不一致,必须从 `lq_md_target` 表按月获取门店归属关系(通过 `F_TechDepartment` 和 `F_Month` 字段)
3. **数据筛选流程**:
- 步骤1:从 `lq_md_target` 表获取指定月份(`F_Month`)、指定科技部(`F_TechDepartment`)归属的门店列表
- 步骤2:使用该门店列表筛选业绩数据
- 步骤3:使用业绩时间字段(`yjsj`、`hksj`、`tksj`)按月份过滤
4. **不能跨月汇总**:每个月份的数据必须独立计算,使用该月份的门店归属关系
5. **趋势分析**:虽然趋势图展示多个月份,但每个月份的数据都是独立计算的
6. **部门区分**:所有数据都需要按照科技部(一部/二部)进行区分