diff --git a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqStatistics/EmployeePerformanceStatisticsOutput.cs b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqStatistics/EmployeePerformanceStatisticsOutput.cs
index f86697b..5cbe83d 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqStatistics/EmployeePerformanceStatisticsOutput.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqStatistics/EmployeePerformanceStatisticsOutput.cs
@@ -69,5 +69,15 @@ namespace NCC.Extend.Entitys.Dto.LqStatistics
/// 人次(日度去重客户数)
///
public int PersonCount { get; set; }
+
+ ///
+ /// 开单项目数
+ ///
+ public int BillingProjectCount { get; set; }
+
+ ///
+ /// 消耗项目数
+ ///
+ public int ConsumeProjectCount { get; set; }
}
}
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs
index 333e74d..eab0601 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqEventService.cs
@@ -800,6 +800,8 @@ namespace NCC.Extend.LqEvent
}
#endregion
+
+
#region 根据活动ID获取人员统计数据
///
diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqStatisticsService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqStatisticsService.cs
index 797600e..3d68fae 100644
--- a/netcore/src/Modularity/Extend/NCC.Extend/LqStatisticsService.cs
+++ b/netcore/src/Modularity/Extend/NCC.Extend/LqStatisticsService.cs
@@ -3389,7 +3389,7 @@ namespace NCC.Extend.LqStatistics
///
///
/// 根据员工ID和月份统计员工的完整业绩数据
- /// 包括:拓客人数、邀约人数、预约人数、开单、消耗、退卡、人头、人次
+ /// 包括:拓客人数、邀约人数、预约人数、开单、消耗、退卡、人头、人次、项目数
///
/// 示例请求:
/// ```json
@@ -3411,8 +3411,10 @@ namespace NCC.Extend.LqStatistics
/// - AppointmentCount: 预约人数
/// - BillingCount: 开单数量
/// - BillingAmount: 开单金额
+ /// - BillingProjectCount: 开单项目数
/// - ConsumeCount: 消耗数量
/// - ConsumeAmount: 消耗金额
+ /// - ConsumeProjectCount: 消耗项目数
/// - RefundCount: 退卡数量
/// - RefundAmount: 退卡金额
/// - HeadCount: 人头(月度去重客户数)
@@ -3461,6 +3463,12 @@ namespace NCC.Extend.LqStatistics
// 8. 人次统计
var personCount = await GetPersonCount(input.UserId, statisticsMonth);
+ // 9. 开单项目数统计
+ var billingProjectCount = await GetBillingProjectCount(input.UserId, statisticsMonth);
+
+ // 10. 消耗项目数统计
+ var consumeProjectCount = await GetConsumeProjectCount(input.UserId, statisticsMonth);
+
return new EmployeePerformanceStatisticsOutput
{
UserId = input.UserId,
@@ -3475,7 +3483,9 @@ namespace NCC.Extend.LqStatistics
RefundCount = refundStats.Count,
RefundAmount = refundStats.Amount,
HeadCount = headCount,
- PersonCount = personCount
+ PersonCount = personCount,
+ BillingProjectCount = billingProjectCount,
+ ConsumeProjectCount = consumeProjectCount
};
}
catch (Exception ex)
@@ -3625,6 +3635,42 @@ namespace NCC.Extend.LqStatistics
return Convert.ToInt32(result.FirstOrDefault()?.Count ?? 0);
}
+ ///
+ /// 统计开单项目数
+ ///
+ private async Task GetBillingProjectCount(string userId, string month)
+ {
+ var sql = $@"
+ SELECT COUNT(DISTINCT pxmx.px) as Count
+ FROM lq_kd_jksyj jksyj
+ INNER JOIN lq_kd_pxmx pxmx ON jksyj.F_kdpxid = pxmx.F_Id
+ WHERE jksyj.jkszh = '{userId}'
+ AND jksyj.F_IsEffective = 1
+ AND DATE_FORMAT(jksyj.yjsj, '%Y%m') = '{month}'";
+
+ var result = await _db.Ado.SqlQueryAsync(sql);
+ return Convert.ToInt32(result.FirstOrDefault()?.Count ?? 0);
+ }
+
+ ///
+ /// 统计消耗项目数
+ ///
+ private async Task GetConsumeProjectCount(string userId, string month)
+ {
+ var sql = $@"
+ SELECT COUNT(DISTINCT pxmx.px) as Count
+ FROM lq_xh_jksyj jksyj
+ INNER JOIN lq_xh_hyhk hyhk ON jksyj.glkdbh = hyhk.F_Id
+ INNER JOIN lq_xh_pxmx pxmx ON pxmx.F_ConsumeInfoId = hyhk.F_Id
+ WHERE jksyj.jkszh = '{userId}'
+ AND jksyj.F_IsEffective = 1
+ AND hyhk.F_IsEffective = 1
+ AND DATE_FORMAT(hyhk.hksj, '%Y%m') = '{month}'";
+
+ var result = await _db.Ado.SqlQueryAsync(sql);
+ return Convert.ToInt32(result.FirstOrDefault()?.Count ?? 0);
+ }
+
#endregion
}