Commit ff3b884a02b2a00f9985a116de0a6a7f546bacef
1 parent
a08a576e
refactor: 营销活动统计忽略品项过滤,统计该时间段内所有开单
- 移除品项过滤逻辑,不再通过活动品项筛选 - 开单统计直接查询lq_kd_kdjlb主表 - 退卡统计直接查询lq_hytk_hytk主表,金额使用tkje字段 - 统计该活动时间段内的所有开单和退卡数据
Showing
1 changed file
with
10 additions
and
48 deletions
netcore/src/Modularity/Extend/NCC.Extend/LqPackageInfoService.cs
| ... | ... | @@ -612,35 +612,7 @@ namespace NCC.Extend.LqPackageInfo |
| 612 | 612 | var startTime = input.StartTime ?? activity.StartTime; |
| 613 | 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 | 616 | string storeFilter = ""; |
| 645 | 617 | string storeFilterRefund = ""; |
| 646 | 618 | |
| ... | ... | @@ -651,8 +623,7 @@ namespace NCC.Extend.LqPackageInfo |
| 651 | 623 | storeFilterRefund = $"AND hytk.md IN ('{storeIdsStr}')"; |
| 652 | 624 | } |
| 653 | 625 | |
| 654 | - // 6. 开单统计 | |
| 655 | - // 直接从开单主表查询,通过子查询判断是否包含活动品项 | |
| 626 | + // 4. 开单统计 - 直接从开单主表查询 | |
| 656 | 627 | var billingSql = $@" |
| 657 | 628 | SELECT |
| 658 | 629 | COUNT(DISTINCT kd.F_Id) as billing_count, |
| ... | ... | @@ -660,15 +631,8 @@ namespace NCC.Extend.LqPackageInfo |
| 660 | 631 | SUM(CAST(kd.qk AS DECIMAL(18,2))) as debt_amount |
| 661 | 632 | FROM lq_kd_kdjlb kd |
| 662 | 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 | 636 | {storeFilter}"; |
| 673 | 637 | |
| 674 | 638 | var billingData = await _db.Ado.SqlQueryAsync<dynamic>(billingSql); |
| ... | ... | @@ -676,17 +640,15 @@ namespace NCC.Extend.LqPackageInfo |
| 676 | 640 | var billingAmount = Convert.ToDecimal(billingData.FirstOrDefault()?.billing_amount ?? 0); |
| 677 | 641 | var debtAmount = Convert.ToDecimal(billingData.FirstOrDefault()?.debt_amount ?? 0); |
| 678 | 642 | |
| 679 | - // 7. 退卡统计 | |
| 643 | + // 5. 退卡统计 - 直接从退卡主表查询 | |
| 680 | 644 | var refundSql = $@" |
| 681 | 645 | SELECT |
| 682 | 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 | 652 | {storeFilterRefund}"; |
| 691 | 653 | |
| 692 | 654 | var refundData = await _db.Ado.SqlQueryAsync<dynamic>(refundSql); | ... | ... |