# 科技部驾驶舱数据分析梳理 ## 📋 概述 本文档梳理科技部驾驶舱可以统计分析的数据维度。科技部分为**科技一部**和**科技二部**,主要关注科美项目(溯源和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. **部门区分**:所有数据都需要按照科技部(一部/二部)进行区分