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 }