Commit ff3b884a02b2a00f9985a116de0a6a7f546bacef

Authored by “wangming”
1 parent a08a576e

refactor: 营销活动统计忽略品项过滤,统计该时间段内所有开单

- 移除品项过滤逻辑,不再通过活动品项筛选
- 开单统计直接查询lq_kd_kdjlb主表
- 退卡统计直接查询lq_hytk_hytk主表,金额使用tkje字段
- 统计该活动时间段内的所有开单和退卡数据
netcore/src/Modularity/Extend/NCC.Extend/LqPackageInfoService.cs
@@ -612,35 +612,7 @@ namespace NCC.Extend.LqPackageInfo @@ -612,35 +612,7 @@ namespace NCC.Extend.LqPackageInfo
612 var startTime = input.StartTime ?? activity.StartTime; 612 var startTime = input.StartTime ?? activity.StartTime;
613 var endTime = input.EndTime ?? activity.EndTime; 613 var endTime = input.EndTime ?? activity.EndTime;
614 614
615 - // 3. 获取营销活动关联的品项ID列表  
616 - var itemIds = await _db.Queryable<LqPackageItemDetailEntity>()  
617 - .Where(x => x.ActivityId == input.ActivityId && x.IsEffective == StatusEnum.有效.GetHashCode())  
618 - .Select(x => x.ItemId)  
619 - .ToListAsync();  
620 -  
621 - if (!itemIds.Any())  
622 - {  
623 - return new ActivityStatisticsOutput  
624 - {  
625 - ActivityId = input.ActivityId,  
626 - ActivityName = activity.ActivityName,  
627 - BillingCount = 0,  
628 - BillingAmount = 0,  
629 - RefundCount = 0,  
630 - RefundAmount = 0,  
631 - NetBillingCount = 0,  
632 - NetBillingAmount = 0,  
633 - RefundRate = 0,  
634 - DebtAmount = 0  
635 - };  
636 - }  
637 -  
638 - // 4. 构建品项ID过滤条件  
639 - var itemIdsStr = string.Join("','", itemIds);  
640 - var itemIdsFilter = $"AND px.px IN ('{itemIdsStr}')";  
641 - var itemIdsFilterRefund = $"AND hytkmx.px IN ('{itemIdsStr}')";  
642 -  
643 - // 5. 构建门店过滤条件 615 + // 3. 构建门店过滤条件
644 string storeFilter = ""; 616 string storeFilter = "";
645 string storeFilterRefund = ""; 617 string storeFilterRefund = "";
646 618
@@ -651,8 +623,7 @@ namespace NCC.Extend.LqPackageInfo @@ -651,8 +623,7 @@ namespace NCC.Extend.LqPackageInfo
651 storeFilterRefund = $"AND hytk.md IN ('{storeIdsStr}')"; 623 storeFilterRefund = $"AND hytk.md IN ('{storeIdsStr}')";
652 } 624 }
653 625
654 - // 6. 开单统计  
655 - // 直接从开单主表查询,通过子查询判断是否包含活动品项 626 + // 4. 开单统计 - 直接从开单主表查询
656 var billingSql = $@" 627 var billingSql = $@"
657 SELECT 628 SELECT
658 COUNT(DISTINCT kd.F_Id) as billing_count, 629 COUNT(DISTINCT kd.F_Id) as billing_count,
@@ -660,15 +631,8 @@ namespace NCC.Extend.LqPackageInfo @@ -660,15 +631,8 @@ namespace NCC.Extend.LqPackageInfo
660 SUM(CAST(kd.qk AS DECIMAL(18,2))) as debt_amount 631 SUM(CAST(kd.qk AS DECIMAL(18,2))) as debt_amount
661 FROM lq_kd_kdjlb kd 632 FROM lq_kd_kdjlb kd
662 WHERE kd.F_IsEffective = 1 633 WHERE kd.F_IsEffective = 1
663 - AND EXISTS (  
664 - SELECT 1  
665 - FROM lq_kd_pxmx px  
666 - WHERE px.glkdbh = kd.F_Id  
667 - AND px.F_IsEffective = 1  
668 - {itemIdsFilter}  
669 - AND px.yjsj >= '{startTime:yyyy-MM-dd HH:mm:ss}'  
670 - AND px.yjsj <= '{endTime:yyyy-MM-dd HH:mm:ss}'  
671 - ) 634 + AND kd.kdrq >= '{startTime:yyyy-MM-dd HH:mm:ss}'
  635 + AND kd.kdrq <= '{endTime:yyyy-MM-dd HH:mm:ss}'
672 {storeFilter}"; 636 {storeFilter}";
673 637
674 var billingData = await _db.Ado.SqlQueryAsync<dynamic>(billingSql); 638 var billingData = await _db.Ado.SqlQueryAsync<dynamic>(billingSql);
@@ -676,17 +640,15 @@ namespace NCC.Extend.LqPackageInfo @@ -676,17 +640,15 @@ namespace NCC.Extend.LqPackageInfo
676 var billingAmount = Convert.ToDecimal(billingData.FirstOrDefault()?.billing_amount ?? 0); 640 var billingAmount = Convert.ToDecimal(billingData.FirstOrDefault()?.billing_amount ?? 0);
677 var debtAmount = Convert.ToDecimal(billingData.FirstOrDefault()?.debt_amount ?? 0); 641 var debtAmount = Convert.ToDecimal(billingData.FirstOrDefault()?.debt_amount ?? 0);
678 642
679 - // 7. 退卡统计 643 + // 5. 退卡统计 - 直接从退卡主表查询
680 var refundSql = $@" 644 var refundSql = $@"
681 SELECT 645 SELECT
682 COUNT(DISTINCT hytk.F_Id) as refund_count, 646 COUNT(DISTINCT hytk.F_Id) as refund_count,
683 - SUM(CAST(hytkmx.tkje AS DECIMAL(18,2))) as refund_amount  
684 - FROM lq_hytk_mx hytkmx  
685 - LEFT JOIN lq_hytk_hytk hytk ON hytkmx.F_RefundInfoId = hytk.F_Id  
686 - WHERE hytkmx.F_IsEffective = 1  
687 - {itemIdsFilterRefund}  
688 - AND hytkmx.tksj >= '{startTime:yyyy-MM-dd HH:mm:ss}'  
689 - AND hytkmx.tksj <= '{endTime:yyyy-MM-dd HH:mm:ss}' 647 + SUM(CAST(hytk.tkje AS DECIMAL(18,2))) as refund_amount
  648 + FROM lq_hytk_hytk hytk
  649 + WHERE hytk.F_IsEffective = 1
  650 + AND hytk.tksj >= '{startTime:yyyy-MM-dd HH:mm:ss}'
  651 + AND hytk.tksj <= '{endTime:yyyy-MM-dd HH:mm:ss}'
690 {storeFilterRefund}"; 652 {storeFilterRefund}";
691 653
692 var refundData = await _db.Ado.SqlQueryAsync<dynamic>(refundSql); 654 var refundData = await _db.Ado.SqlQueryAsync<dynamic>(refundSql);