diff --git a/netcore/src/Modularity/Extend/NCC.Extend/LqDailyReportService.cs b/netcore/src/Modularity/Extend/NCC.Extend/LqDailyReportService.cs index 34d7786..f0ad62a 100644 --- a/netcore/src/Modularity/Extend/NCC.Extend/LqDailyReportService.cs +++ b/netcore/src/Modularity/Extend/NCC.Extend/LqDailyReportService.cs @@ -410,43 +410,48 @@ namespace NCC.Extend } // 第二步:统计各事业部的开单业绩 + // 重要:门店归属事业部应该从门店目标表(lq_md_target)中获取,不同月份的归属可能不一样 + // 通过 lq_md_target 表关联门店和事业部,确保使用指定月份的事业部归属关系 var businessUnitIds = businessUnitDict.Keys.ToList(); var unitIdsStr = string.Join("','", businessUnitIds); var billingPerformanceSql = $@" SELECT - store.syb as BusinessUnitId, + target.F_BusinessUnit as BusinessUnitId, COALESCE(SUM(billing.sfyj), 0) as BillingPerformance FROM lq_kd_kdjlb billing - INNER JOIN lq_mdxx store ON billing.djmd = store.F_Id - INNER JOIN base_organize o ON store.syb = o.F_Id + INNER JOIN lq_md_target target ON billing.djmd = target.F_StoreId AND target.F_Month = '{month}' + INNER JOIN base_organize o ON target.F_BusinessUnit = o.F_Id WHERE billing.F_IsEffective = 1 + AND target.F_BusinessUnit IS NOT NULL AND o.F_Category = 'department' AND (o.F_DeleteMark IS NULL OR o.F_DeleteMark != 1) AND o.F_FullName IN ('事业一部', '事业二部', '事业三部', '事业四部', '事业五部', '事业六部') AND DATE(billing.kdrq) >= '{startDate:yyyy-MM-dd}' AND DATE(billing.kdrq) <= '{endDate:yyyy-MM-dd}' - AND store.syb IN ('{unitIdsStr}') - GROUP BY store.syb"; + AND target.F_BusinessUnit IN ('{unitIdsStr}') + GROUP BY target.F_BusinessUnit"; var billingPerformanceData = await _db.Ado.SqlQueryAsync(billingPerformanceSql); // 第三步:统计各事业部的退卡金额(使用实退金额,如果没有则使用退卡总金额) + // 重要:门店归属事业部应该从门店目标表(lq_md_target)中获取,不同月份的归属可能不一样 var refundPerformanceSql = $@" SELECT - store.syb as BusinessUnitId, + target.F_BusinessUnit as BusinessUnitId, COALESCE(SUM(COALESCE(refund.F_ActualRefundAmount, refund.tkje, 0)), 0) as RefundPerformance FROM lq_hytk_hytk refund - INNER JOIN lq_mdxx store ON refund.md = store.F_Id - INNER JOIN base_organize o ON store.syb = o.F_Id + INNER JOIN lq_md_target target ON refund.md = target.F_StoreId AND target.F_Month = '{month}' + INNER JOIN base_organize o ON target.F_BusinessUnit = o.F_Id WHERE refund.F_IsEffective = 1 + AND target.F_BusinessUnit IS NOT NULL AND o.F_Category = 'department' AND (o.F_DeleteMark IS NULL OR o.F_DeleteMark != 1) AND o.F_FullName IN ('事业一部', '事业二部', '事业三部', '事业四部', '事业五部', '事业六部') AND DATE(refund.tksj) >= '{startDate:yyyy-MM-dd}' AND DATE(refund.tksj) <= '{endDate:yyyy-MM-dd}' - AND store.syb IN ('{unitIdsStr}') - GROUP BY store.syb"; + AND target.F_BusinessUnit IN ('{unitIdsStr}') + GROUP BY target.F_BusinessUnit"; var refundPerformanceData = await _db.Ado.SqlQueryAsync(refundPerformanceSql);