科技部驾驶舱GetStatistics接口新增字段可行性分析.md 6.95 KB

科技部驾驶舱 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 示例

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 示例

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 示例

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 示例

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 示例

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. 时间范围:所有统计都使用 startDateendDateTime 的时间范围
  2. 门店筛选:通过 storeIds 列表筛选,这些门店已经通过 lq_md_target 表确定了科技部归属
  3. 有效性筛选:所有查询都需要加上 F_IsEffective = 1 的条件
  4. 科美类型判断
    • 开单和退卡:通过关联的业绩表(lq_kd_kjbsyjlq_hytk_kjbsyj)的 ItemCategory 字段判断
    • 储扣:通过关联的 lq_xmzl 表的 qt2 字段判断
    • 消耗和手工费:直接使用 lq_xh_kjbsyj 表的 ItemCategory 字段判断

建议实现顺序

  1. 先实现消耗手工费(最简单,直接查询 lq_xh_kjbsyj 表)
  2. 再实现开单(需要关联 lq_kd_kjbsyj 表)
  3. 然后实现退款(需要关联 lq_hytk_kjbsyj 表)
  4. 最后实现储扣(需要关联多个表,逻辑相对复杂)