浏览代码

修复统计没有补充发放数据

qinchaoyue 2 周之前
父节点
当前提交
88e5306af6

+ 26 - 22
src/Hotline.Application/Snapshot/BiSnapshotApplication.cs

@@ -128,29 +128,33 @@ public class BiSnapshotApplication : IBiSnapshotApplication, IScopeDependency
                 ShouldAmount = industryCase.CitizenReadPackAmount == null ? industry.CitizenReadPackAmount : industryCase.CitizenReadPackAmount,
             }).ToList();
 
-        var redPackOutDto = _redPackAuditRepository.Queryable(includeDeleted: true)
-            .LeftJoin<OrderSnapshot>((audit, snapshot) => audit.OrderId == snapshot.Id)
-            .LeftJoin<RedPackRecord>((audit, snapshot, record) => record.RedPackAuditId == audit.Id)
-            .LeftJoin<SupplementRecord>((audit, snapshot, record, supplement) => supplement.RedPackAuditId == audit.Id)
-            .Where((audit, snapshot) => audit.CreationTime >= dto.StartTime && audit.CreationTime <= dto.EndTime)
-            .GroupBy((audit, snapshot) => new { snapshot.IndustryCase, snapshot.IndustryId, snapshot.IndustryName })
-            .Select((audit, snapshot, record, supplement) => new RedPackStatisticsOutDto
-            {
-                Id = snapshot.IndustryId,
-                Name = snapshot.IndustryName,
-                CaseId = snapshot.IndustryCase,
-                ApprovalAmount = SqlFunc.AggregateSum(SqlFunc.IIF(audit.Status == ERedPackAuditStatus.Agree, audit.ApprovedAmount, 0)), //审批同意总金额
-                ApprovalCount = SqlFunc.AggregateSum(SqlFunc.IIF(audit.Status == ERedPackAuditStatus.Agree, 1, 0)), // 审批同意总个数
-                SentAmount = SqlFunc.AggregateSum(SqlFunc.IIF(audit.IsSend == true, audit.AcutalAmount, 0)), // 发送成功金额
-                SentCount = SqlFunc.AggregateSum(SqlFunc.IIF(audit.IsSend == true, 1, 0)), // 发送成功个数
-                SendFailAmount = SqlFunc.AggregateSum(SqlFunc.IIF(record.DistributionState == EReadPackSendStatus.Fail, record.Amount, 0)), //发送失败金额
-                SendFailCount = SqlFunc.AggregateSum(SqlFunc.IIF(record.DistributionState == EReadPackSendStatus.Fail, 1, 0)), // 发送失败个数
-                PendingAmount = SqlFunc.AggregateSum(SqlFunc.IIF(record.DistributionState == EReadPackSendStatus.Unsend, audit.ApprovedAmount, 0)), // 待发金额
-                PendingCount = SqlFunc.AggregateSum(SqlFunc.IIF(record.DistributionState == EReadPackSendStatus.Unsend, 1, 0)), // 待发个数
-                SupplementAmount = SqlFunc.AggregateSum(supplement.ReplenishAmount), // 补充红包金额
-                SupplementCount = SqlFunc.AggregateCount(supplement.Id), // 补充红包数
-            }).ToList();
+        var query = _redPackAuditRepository.Queryable(includeDeleted: true)
+        .LeftJoin<OrderSnapshot>((audit, snapshot) => audit.OrderId == snapshot.Id)
+        .LeftJoin<RedPackRecord>((audit, snapshot, record) => record.RedPackAuditId == audit.Id)
+        .LeftJoin<SupplementRecord>((audit, snapshot, record, supplement) => supplement.OrderId == snapshot.Id)
+        .Where((audit, snapshot) => audit.CreationTime >= dto.StartTime && audit.CreationTime <= dto.EndTime)
+        .GroupBy((audit, snapshot) => new { snapshot.IndustryCase, snapshot.IndustryId, snapshot.IndustryName })
+        .Select((audit, snapshot, record, supplement) => new RedPackStatisticsOutDto
+        {
+            Id = snapshot.IndustryId,
+            Name = snapshot.IndustryName,
+            CaseId = snapshot.IndustryCase,
+            ApprovalAmount = SqlFunc.AggregateSum(SqlFunc.IIF(audit.Status == ERedPackAuditStatus.Agree, audit.ApprovedAmount, 0)), //审批同意总金额
+            ApprovalCount = SqlFunc.AggregateSum(SqlFunc.IIF(audit.Status == ERedPackAuditStatus.Agree, 1, 0)), // 审批同意总个数
+            SentAmount = SqlFunc.AggregateSum(SqlFunc.IIF(audit.IsSend == true, audit.AcutalAmount, 0)), // 发送成功金额
+            SentCount = SqlFunc.AggregateSum(SqlFunc.IIF(audit.IsSend == true, 1, 0)), // 发送成功个数
+            SendFailAmount = SqlFunc.AggregateSum(SqlFunc.IIF(record.DistributionState == EReadPackSendStatus.Fail, record.Amount, 0)), //发送失败金额
+            SendFailCount = SqlFunc.AggregateSum(SqlFunc.IIF(record.DistributionState == EReadPackSendStatus.Fail, 1, 0)), // 发送失败个数
+            PendingAmount = SqlFunc.AggregateSum(SqlFunc.IIF(record.DistributionState == EReadPackSendStatus.Unsend, audit.ApprovedAmount, 0)), // 待发金额
+            PendingCount = SqlFunc.AggregateSum(SqlFunc.IIF(record.DistributionState == EReadPackSendStatus.Unsend, 1, 0)), // 待发个数
+            SupplementAmount = SqlFunc.AggregateSum(supplement.ReplenishAmount), // 补充红包金额
+            SupplementCount = SqlFunc.AggregateCount(supplement.Id), // 补充红包数
+        });
+#if DEBUG
+        var sql = query.ToSqlString();
+#endif
 
+        var redPackOutDto = query.ToList();
         foreach (var industry in industries)
         {
             var item = redPackOutDto

+ 11 - 0
test/Hotline.Tests/Application/BiSnapshotApplicationTest.cs

@@ -126,4 +126,15 @@ public class BiSnapshotApplicationTest : TestBase
         var items = await _biSnapshotApplication.GetCompliantStatisticsDetails(inDto).ToPagedListAsync(inDto);
         items.Total.ShouldNotBe(0);
     }
+
+    [Fact]
+    public async Task GetRedPackAuditStatistics_Test()
+    {
+        var items = _biSnapshotApplication.GetRedPackAuditStatistics(new RedPackStatisticsInDto()
+        {
+            StartTime = DateTime.Now.AddDays(-7),
+            EndTime = DateTime.Now
+        });
+        items.ShouldNotBeNull();
+    }
 }