店长三项指标统计表-逻辑梳理.md
14.4 KB
店长三项指标统计表 - 逻辑梳理
📋 需求概述
创建一个"店长三项指标统计表",用于统计和展示所有门店店长每月的底薪及三项指标的完成情况。
核心需求
- 统计维度:每个月、所有门店店长
- 统计内容:
- 底薪(固定底薪、实际底薪、考核扣款)
- 三项指标的完成与否
- 当月期初设定的目标
- 完成度(实际值/目标值)
- 展示方式:
- ①当月全部店长的对比(横向对比)
- ②一个店长全年数据(纵向趋势)
📊 三项指标定义
指标1:业绩考核
- 目标值:门店生命线(
F_StoreLifeline) - 实际值:门店总业绩(
F_StoreTotalPerformance= 开单业绩 - 退卡业绩) - 达标标准:
实际值 >= 目标值 - 完成度:
实际值 / 目标值 × 100% - 数据来源:
- 目标值:
lq_md_target.F_StoreLifeline(按门店ID和月份查询) - 实际值:
lq_store_manager_salary_statistics.F_StoreTotalPerformance - 达标状态:
lq_store_manager_salary_statistics.F_PerformanceReached("是"/"否")
- 目标值:
指标2:人头考核
- 目标值:门店人头目标(
F_StoreHeadcountTarget) - 实际值:进店消耗人数(
F_HeadCount) - 达标标准:
实际值 >= 目标值 - 完成度:
实际值 / 目标值 × 100% - 数据来源:
- 目标值:
lq_md_target.F_StoreHeadcountTarget(按门店ID和月份查询) - 实际值:
lq_store_manager_salary_statistics.F_HeadCount - 达标状态:
lq_store_manager_salary_statistics.F_HeadCountReached("是"/"否")
- 目标值:
指标3:消耗考核
- 目标值:门店消耗目标(
F_StoreConsumeTarget) - 实际值:门店消耗金额(
F_StoreConsume) - 达标标准:
实际值 >= 目标值 - 完成度:
实际值 / 目标值 × 100% - 适用范围:仅老店考核,新店不考核此指标
- 数据来源:
- 目标值:
lq_md_target.F_StoreConsumeTarget(按门店ID和月份查询) - 实际值:
lq_store_manager_salary_statistics.F_StoreConsume - 达标状态:
lq_store_manager_salary_statistics.F_ConsumeReached("是"/"否")
- 目标值:
💰 底薪计算逻辑
固定底薪
- 金额:4000元(固定值)
- 数据来源:
lq_store_manager_salary_statistics.F_BaseSalary
考核扣款
- 老店:每个未达标指标扣除500元
- 新店:每个未达标指标扣除800元
- 计算公式:
考核扣款 = 未达标指标数 × 扣款金额(500或800) - 数据来源:
- 未达标指标数:
lq_store_manager_salary_statistics.F_UnreachedIndicatorCount - 考核扣款:
lq_store_manager_salary_statistics.F_AssessmentDeduction
- 未达标指标数:
旗舰店负奖励
- 金额:800元(仅旗舰店)
- 判断标准:
F_StoreType = 2(StoreTypeEnum.旗舰店) - 数据来源:
lq_store_manager_salary_statistics.F_FlagshipStoreDeduction
实际底薪
- 计算公式:
实际底薪 = 固定底薪 - 考核扣款 - 旗舰店负奖励 - 数据来源:
lq_store_manager_salary_statistics.F_ActualBaseSalary
📈 数据来源
主数据表:lq_store_manager_salary_statistics(店长工资统计表)
关键字段:
F_StoreId:门店IDF_StoreName:门店名称F_EmployeeId:员工ID(店长)F_EmployeeName:员工姓名(店长)F_StatisticsMonth:统计月份(YYYYMM格式)F_IsNewStore:是否新店("是"/"否")F_StoreType:门店类型(用于判断是否旗舰店)
三项指标相关字段:
F_StoreLifeline:门店生命线(目标值)F_StoreTotalPerformance:门店总业绩(实际值)F_PerformanceReached:业绩是否达标("是"/"否")F_PerformanceCompletionRate:业绩完成率F_TargetHeadCount:目标人头数(目标值)F_HeadCount:进店消耗人数(实际值)F_HeadCountReached:人头是否达标("是"/"否")F_TargetConsume:目标消耗金额(目标值)F_StoreConsume:门店消耗金额(实际值)F_ConsumeReached:消耗是否达标("是"/"否")
底薪相关字段:
F_BaseSalary:固定底薪(4000元)F_UnreachedIndicatorCount:未达标指标数量F_AssessmentDeduction:考核扣款F_FlagshipStoreDeduction:旗舰店负奖励F_ActualBaseSalary:实际底薪
目标数据表:lq_md_target(门店目标表)
关键字段:
F_StoreId:门店IDF_Month:月份(YYYYMM格式)F_StoreLifeline:门店生命线F_StoreHeadcountTarget:门店人头目标F_StoreConsumeTarget:门店消耗目标
说明:
- 目标数据在期初设定,存储在
lq_md_target表中 - 店长工资统计表(
lq_store_manager_salary_statistics)在计算时已经关联了目标数据 - 但为了确保数据一致性,建议在统计时也关联
lq_md_target表,以获取期初设定的目标值
🔍 统计逻辑
场景1:当月全部店长的对比
查询条件:
F_StatisticsMonth = 指定月份(YYYYMM格式)F_Position = "店长"(如果需要过滤岗位)
返回字段:
- 门店信息:门店ID、门店名称
- 店长信息:员工ID、员工姓名
- 门店类型:是否新店、门店类型(用于判断是否旗舰店)
- 三项指标:
- 指标1(业绩):
- 目标值(生命线)
- 实际值(门店总业绩)
- 完成度(%)
- 是否达标(是/否)
- 指标2(人头):
- 目标值(人头目标)
- 实际值(进店消耗人数)
- 完成度(%)
- 是否达标(是/否)
- 指标3(消耗):
- 目标值(消耗目标)
- 实际值(门店消耗金额)
- 完成度(%)
- 是否达标(是/否)
- 是否考核(新店不考核,显示"-")
- 底薪信息:
- 固定底薪(4000元)
- 未达标指标数
- 考核扣款
- 旗舰店负奖励(仅旗舰店)
- 实际底薪
排序方式:
- 可按门店名称、店长姓名、业绩完成度、人头完成度、消耗完成度、实际底薪等字段排序
筛选条件:
- 门店ID列表
- 是否新店
- 门店类型(是否旗舰店)
- 指标达标情况(全部达标/部分达标/全部未达标)
场景2:一个店长全年数据
查询条件:
F_EmployeeId = 指定店长IDF_StatisticsMonth在指定年份范围内(如:202501-202512)
返回字段:
- 店长信息:员工ID、员工姓名
- 月份:统计月份(YYYYMM格式)
- 门店信息:门店ID、门店名称(可能不同月份在不同门店)
- 门店类型:是否新店、门店类型
- 三项指标(每个指标包含目标值、实际值、完成度、是否达标)
- 底薪信息(固定底薪、考核扣款、旗舰店负奖励、实际底薪)
排序方式:
- 按月份升序排列
统计维度:
- 可统计全年平均完成度
- 可统计全年达标次数
- 可统计全年平均底薪
- 可统计全年总扣款
📋 数据完整性说明
数据关联关系
店长工资统计表 → 门店目标表:
- 通过
F_StoreId+F_StatisticsMonth关联lq_md_target.F_StoreId+lq_md_target.F_Month - 用于获取期初设定的目标值
- 通过
店长工资统计表 → 门店信息表:
- 通过
F_StoreId关联lq_mdxx.F_Id - 用于获取门店名称、门店类型等信息
- 通过
店长工资统计表 → 员工信息表:
- 通过
F_EmployeeId关联BASE_USER.F_Id - 用于获取店长姓名、账号等信息
- 通过
数据校验
目标值校验:
- 如果
lq_md_target表中没有对应月份的目标数据,应提示"目标未设置" - 如果目标值为0,应提示"目标未设置"
- 如果
实际值校验:
- 如果
lq_store_manager_salary_statistics表中没有对应月份的统计数据,应提示"数据未计算" - 如果店长在某个月份离职,可能没有统计数据
- 如果
新店判断:
- 通过
F_IsNewStore字段判断是否新店 - 新店不考核消耗指标,指标3应显示"-"或不显示
- 通过
🎯 接口设计建议
接口1:获取当月全部店长三项指标对比
接口路径:/api/Extend/LqStatistics/get-store-manager-indicators-comparison
请求参数:
{
"statisticsMonth": "202601", // 统计月份(YYYYMM格式)
"storeIds": ["门店ID1", "门店ID2"], // 可选,门店ID列表
"isNewStore": null, // 可选,是否新店(true/false/null)
"storeType": null, // 可选,门店类型(用于筛选旗舰店)
"indicatorStatus": null // 可选,指标达标情况("all_reached"/"partial"/"all_unreached")
}
返回数据:
{
"list": [
{
"storeId": "门店ID",
"storeName": "门店名称",
"employeeId": "店长ID",
"employeeName": "店长姓名",
"isNewStore": "是",
"storeType": 2,
"isFlagshipStore": true,
"performanceIndicator": {
"target": 100000,
"actual": 120000,
"completionRate": 120.00,
"reached": "是"
},
"headCountIndicator": {
"target": 100,
"actual": 120,
"completionRate": 120.00,
"reached": "是"
},
"consumeIndicator": {
"target": 50000,
"actual": 60000,
"completionRate": 120.00,
"reached": "是",
"isAssessed": true // 是否考核(新店为false)
},
"baseSalary": {
"fixedSalary": 4000,
"unreachedIndicatorCount": 0,
"assessmentDeduction": 0,
"flagshipStoreDeduction": 0,
"actualSalary": 4000
}
}
],
"summary": {
"totalCount": 50,
"allReachedCount": 30,
"partialReachedCount": 15,
"allUnreachedCount": 5,
"averagePerformanceCompletionRate": 105.50,
"averageHeadCountCompletionRate": 98.30,
"averageConsumeCompletionRate": 95.20
}
}
接口2:获取店长全年三项指标数据
接口路径:/api/Extend/LqStatistics/get-store-manager-yearly-indicators
请求参数:
{
"employeeId": "店长ID",
"year": 2026 // 年份
}
返回数据:
{
"employeeId": "店长ID",
"employeeName": "店长姓名",
"year": 2026,
"monthlyData": [
{
"month": "202601",
"storeId": "门店ID",
"storeName": "门店名称",
"isNewStore": "是",
"storeType": 2,
"isFlagshipStore": true,
"performanceIndicator": {
"target": 100000,
"actual": 120000,
"completionRate": 120.00,
"reached": "是"
},
"headCountIndicator": {
"target": 100,
"actual": 120,
"completionRate": 120.00,
"reached": "是"
},
"consumeIndicator": {
"target": 50000,
"actual": 60000,
"completionRate": 120.00,
"reached": "是",
"isAssessed": true
},
"baseSalary": {
"fixedSalary": 4000,
"unreachedIndicatorCount": 0,
"assessmentDeduction": 0,
"flagshipStoreDeduction": 0,
"actualSalary": 4000
}
}
],
"yearlySummary": {
"totalMonths": 12,
"workedMonths": 10,
"averagePerformanceCompletionRate": 105.50,
"averageHeadCountCompletionRate": 98.30,
"averageConsumeCompletionRate": 95.20,
"allReachedMonths": 8,
"partialReachedMonths": 2,
"allUnreachedMonths": 0,
"averageActualSalary": 3800,
"totalAssessmentDeduction": 2000
}
}
🔄 数据计算逻辑
完成度计算
// 业绩完成度
decimal performanceCompletionRate = targetLifeline > 0
? (actualPerformance / targetLifeline) * 100m
: 0m;
// 人头完成度
decimal headCountCompletionRate = targetHeadCount > 0
? (actualHeadCount / targetHeadCount) * 100m
: 0m;
// 消耗完成度(仅老店)
decimal consumeCompletionRate = isNewStore || targetConsume <= 0
? 0m // 新店不考核,返回0或null
: (actualConsume / targetConsume) * 100m;
达标判断
// 业绩是否达标
bool performanceReached = actualPerformance >= targetLifeline;
// 人头是否达标
bool headCountReached = actualHeadCount >= targetHeadCount;
// 消耗是否达标(仅老店)
bool consumeReached = isNewStore ? true : (actualConsume >= targetConsume);
底薪计算
// 固定底薪
decimal fixedSalary = 4000m;
// 计算未达标指标数
int unreachedCount = 0;
if (!performanceReached) unreachedCount++;
if (!headCountReached) unreachedCount++;
if (!isNewStore && !consumeReached) unreachedCount++;
// 考核扣款
decimal assessmentDeduction = isNewStore
? unreachedCount * 800m
: unreachedCount * 500m;
// 旗舰店负奖励
decimal flagshipStoreDeduction = (storeType == 2) ? 800m : 0m;
// 实际底薪
decimal actualSalary = fixedSalary - assessmentDeduction - flagshipStoreDeduction;
📝 注意事项
新店特殊处理:
- 新店不考核消耗指标,指标3应显示"-"或不显示
- 新店每个未达标指标扣款800元(老店500元)
旗舰店特殊处理:
- 旗舰店需要扣除负奖励800元
- 判断标准:
F_StoreType = 2
数据缺失处理:
- 如果某个月份没有目标数据,应提示"目标未设置"
- 如果某个月份没有统计数据,应提示"数据未计算"
- 如果店长在某个月份离职,可能没有统计数据
数据一致性:
- 建议同时关联
lq_store_manager_salary_statistics和lq_md_target表 - 确保目标值来自期初设定的
lq_md_target表 - 确保实际值和达标状态来自
lq_store_manager_salary_statistics表
- 建议同时关联
性能优化:
- 对于"当月全部店长对比",建议使用分页查询
- 对于"店长全年数据",数据量较小,可以一次性返回
✅ 总结
核心数据表
- 主表:
lq_store_manager_salary_statistics(店长工资统计表) - 目标表:
lq_md_target(门店目标表)
核心字段
- 三项指标:业绩、人头、消耗
- 底薪信息:固定底薪、考核扣款、实际底薪
核心逻辑
- 达标判断:实际值 >= 目标值
- 完成度计算:实际值 / 目标值 × 100%
- 底薪计算:固定底薪 - 考核扣款 - 旗舰店负奖励
展示方式
- 横向对比:当月全部店长的三项指标完成情况
- 纵向趋势:一个店长全年的三项指标完成情况