# 科技部驾驶舱 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 示例**: ```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 示例**: ```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 示例**: ```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 示例**: ```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 示例**: ```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. **时间范围**:所有统计都使用 `startDate` 到 `endDateTime` 的时间范围 2. **门店筛选**:通过 `storeIds` 列表筛选,这些门店已经通过 `lq_md_target` 表确定了科技部归属 3. **有效性筛选**:所有查询都需要加上 `F_IsEffective = 1` 的条件 4. **科美类型判断**: - 开单和退卡:通过关联的业绩表(`lq_kd_kjbsyj`、`lq_hytk_kjbsyj`)的 `ItemCategory` 字段判断 - 储扣:通过关联的 `lq_xmzl` 表的 `qt2` 字段判断 - 消耗和手工费:直接使用 `lq_xh_kjbsyj` 表的 `ItemCategory` 字段判断 ### 建议实现顺序 1. 先实现**消耗**和**手工费**(最简单,直接查询 `lq_xh_kjbsyj` 表) 2. 再实现**开单**(需要关联 `lq_kd_kjbsyj` 表) 3. 然后实现**退款**(需要关联 `lq_hytk_kjbsyj` 表) 4. 最后实现**储扣**(需要关联多个表,逻辑相对复杂)