Pārlūkot izejas kodu

随手拍统计

qinchaoyue 2 mēneši atpakaļ
vecāks
revīzija
6b89114701

+ 18 - 12
src/Hotline.Application/Snapshot/BiSnapshotApplication.cs

@@ -3,6 +3,7 @@ using Hotline.FlowEngine.Workflows;
 using Hotline.Orders;
 using Hotline.Share.Dtos.Snapshot;
 using Hotline.Share.Enums.FlowEngine;
+using Hotline.Share.Enums.Order;
 using Hotline.Share.Enums.Snapshot;
 using Hotline.Snapshot;
 using Hotline.Snapshot.Interfaces;
@@ -29,18 +30,20 @@ public class BiSnapshotApplication : IBiSnapshotApplication, IScopeDependency
 
     public async Task<SnapshotStatisticsOutDto> GetSnapshotStatisticsAsync(SnapshotStatisticsInDto dto, CancellationToken token)
     {
-        var query = _orderSnapshotRepository.Queryable()
+        var query = _orderSnapshotRepository.Queryable(includeDeleted: true)
             .LeftJoin<Order>((snapshot, order) => order.Id == snapshot.Id)
             .LeftJoin<RedPackAudit>((snapshot, order, redPackAudit) => snapshot.Id == redPackAudit.OrderId)
             .LeftJoin<SpecialRedPackAudit>((snapshot, order, redPackAudit, special) => snapshot.Id == special.OrderId)
             .LeftJoin<RedPackGuiderAudit>((snapshot, order, redPackAudit, special, guiderAudit) => snapshot.Id == guiderAudit.OrderId)
             .LeftJoin<RedPackRecord>((snapshot, order, redPackAudit, special, guiderAudit, record) => redPackAudit.Id == record.RedPackAuditId)
+            .LeftJoin<OrderSecondaryHandling>((snapshot, order, redPackAudit, special, guiderAudit, record, second) => snapshot.Id == second.OrderId)
+             .LeftJoin<OrderSpecial>((snapshot, order, redPackAudit, special, guiderAudit, record, second, orderSpecial) => snapshot.Id == orderSpecial.OrderId)
             .Where((snapshot) => snapshot.CreationTime >= dto.StartTime && snapshot.CreationTime <= dto.EndTime)
-            .Select((snapshot, order, redPackAudit, special, guiderAudit, record) => new SnapshotStatisticsOutDto
+            .Select((snapshot, order, redPackAudit, special, guiderAudit, record, second, orderSpecial) => new SnapshotStatisticsOutDto
             {
                 WZSLFWNJS = 0, // 未在受理范围内件数,
                 SSPZ12345JS = SqlFunc.AggregateSum(SqlFunc.IIF(order.SourceChannelCode != "SSP", 1, 0)), // 随手拍转12345件数,
-                SLFWNZJS = SqlFunc.AggregateCount(snapshot.Id), // 受理范围内总件数,
+                SLFWNZJS = SqlFunc.AggregateSum(SqlFunc.IIF(order.SourceChannelCode ==  "SSP", 1, 0)), // 受理范围内总件数,
                 SLFWNPGWGYSXSNHFJS = SqlFunc.AggregateSum(SqlFunc.IIF(snapshot.IsGuidSystemCallBack == true && snapshot.GuidSystemCallBackTime.Value.AddHours(-4) > snapshot.SendGuidSystemTime, 1, 0)), // 受理范围内派给网格员四小时内回复件数,
                 SLFWNPGWGYCGSXSHFJS = SqlFunc.AggregateSum(SqlFunc.IIF(snapshot.IsGuidSystemCallBack == true && snapshot.GuidSystemCallBackTime.Value.AddHours(-4) <= snapshot.SendGuidSystemTime, 1, 0)), // 受理范围内派给网格员超过四小时回复件数
                 SLFWNPGWGYWHFJS = SqlFunc.AggregateSum(SqlFunc.IIF(snapshot.IsGuidSystemCallBack == false, 1, 0)), // 受理范围内派给网格员未回复件数
@@ -77,16 +80,19 @@ public class BiSnapshotApplication : IBiSnapshotApplication, IScopeDependency
                 YWCAQYHZG = SqlFunc.AggregateSum(SqlFunc.IIF(snapshot.IsRectifyDepartment == true, 1, 0)), // 已完成安全隐患整改
                 SQYQGDJS = SqlFunc.AggregateSum(SqlFunc.IIF(order.OrderDelays.Count(m => m.DelayState == Share.Enums.Order.EDelayState.Pass) > 0, 1, 0)), // 申请延期工单件数
                 SQYQGDCS = SqlFunc.AggregateSum(SqlFunc.IIF(order.OrderDelays.Count() > 0, order.OrderDelays.Count(m => m.DelayState == Share.Enums.Order.EDelayState.Pass), 0)), // 申请延期工单次数
-                CQJ = SqlFunc.AggregateSum(SqlFunc.IIF(order.DaysOverdueOrgName != null, 1, 0)), // 超期件
-                ECBLJSTHBM = SqlFunc.AggregateSum(SqlFunc.IIF()), // 二次办理件数 - 退回部门
-                ECBLJSHFBMYCB = 0, // 二次办理件数-回访不满意重办
+                CQJ = SqlFunc.AggregateSum(SqlFunc.IIF(order.Status >= EOrderStatus.Filed && order.ExpiredTime < order.FiledTime, 1, 0)), // 超期件
+                ECBLJSTHBM = SqlFunc.AggregateSum(SqlFunc.IIF(second.State == ESecondaryHandlingState.Handled && second.ApplyOrgName != "市民热线服务中心", 1, 0)), // 二次办理件数 - 退回部门
+                ECBLJSHFBMYCB = SqlFunc.AggregateSum(SqlFunc.IIF(second.State == ESecondaryHandlingState.Handled && SqlFunc.JsonField(second.VisitDetail.OrgHandledAttitude, "Key") == "2", 1, 0)), // 二次办理件数-回访不满意重办
                 ECBLJSTTDYYJBM = 0, // 二次办理件数-特提到原一级部门
-                ECBLGDMYL = 0, // 二次办理工单满意率
-                ECBLGDMYLTHBM = 0, // 二次办理工单满意率-退回部门
-                ECBLGDMYLHFBMYCB = 0, // 二次办理工单满意率-回访不满意重办
-                TTDYYJBMJS = 0, // 特提到原一级部门件数
-                TTDPDZJS = 0, // 特提到派单组件数
-                QTTTJS = 0, // 其他特提件数
+                ECBLJSHFMY = SqlFunc.AggregateSum(SqlFunc.IIF(second.State == ESecondaryHandlingState.Handled && (SqlFunc.JsonField(second.VisitDetail.OrgHandledAttitude, "Key") == "5" || SqlFunc.JsonField(second.VisitDetail.OrgHandledAttitude, "Key") == "4" || SqlFunc.JsonField(second.VisitDetail.OrgHandledAttitude, "Key") == "-1" || SqlFunc.JsonField(second.VisitDetail.OrgHandledAttitude, "Key") == "0"), 1, 0)), // 二次办理件数-回访满意
+                // ECBLGDMYL = , // 二次办理工单满意率
+                ECBLGDJSTMBMHFMYD = SqlFunc.AggregateSum(SqlFunc.IIF(second.State == ESecondaryHandlingState.Handled && second.ApplyOrgName != "市民热线服务中心" && (SqlFunc.JsonField(second.VisitDetail.OrgHandledAttitude, "Key") == "5" || SqlFunc.JsonField(second.VisitDetail.OrgHandledAttitude, "Key") == "4" || SqlFunc.JsonField(second.VisitDetail.OrgHandledAttitude, "Key") == "-1" || SqlFunc.JsonField(second.VisitDetail.OrgHandledAttitude, "Key") == "0"), 1, 0)), // 二次办理工单件数-退回部门回访满意
+                // ECBLGDMYLTHBM = , // 二次办理工单满意率-退回部门
+                // ECBLGDMYLHFBMYCB = 0, // 二次办理工单满意率-回访不满意重办
+
+                TTDYYJBMJS = SqlFunc.AggregateSum(SqlFunc.IIF(orderSpecial.State == 1 && orderSpecial.SpecialType == ESpecialType.Special && orderSpecial.NextStepName == "一级部门", 1, 0)), // 特提到原一级部门件数
+                TTDPDZJS = SqlFunc.AggregateSum(SqlFunc.IIF(orderSpecial.State == 1 && orderSpecial.SpecialType == ESpecialType.Special && orderSpecial.NextStepName == "派单组", 1, 0)), // 特提到派单组件数
+                QTTTJS = SqlFunc.AggregateSum(SqlFunc.IIF(orderSpecial.State == 1 && orderSpecial.IsDeleted == false && orderSpecial.SpecialType == ESpecialType.Special && (orderSpecial.NextStepName != "一级部门" || orderSpecial.NextStepName != "派单组"), 1, 0)), // 其他特提件数
             });
         return await query.FirstAsync();
     }

+ 13 - 3
src/Hotline.Share/Dtos/Snapshot/StatisticsDto.cs

@@ -260,6 +260,11 @@ public class SnapshotStatisticsOutDto
     /// </summary>
     public int ECBLJSHFBMYCB { get; set; }
 
+    /// <summary>
+    /// 二次办理件数-回访满意
+    /// </summary>
+    public int ECBLJSHFMY { get; set; }
+
     /// <summary>
     /// 二次办理件数-特提到原一级部门
     /// </summary>
@@ -268,17 +273,22 @@ public class SnapshotStatisticsOutDto
     /// <summary>
     /// 二次办理工单满意率
     /// </summary>
-    public double ECBLGDMYL { get; set; }
+    public double ECBLGDMYL => ECBLJS == 0 ? 0 : (ECBLJSHFMY / ECBLJS) * 100;
 
     /// <summary>
     /// 二次办理工单满意率
     /// </summary>
     public string ECBLGDMYLTxt => ECBLGDMYL.ToString("f4") + "%";
 
+    /// <summary>
+    /// 二次办理工单件数-退回部门回访满意
+    /// </summary>
+    public int ECBLGDJSTMBMHFMYD { get; set; }
+
     /// <summary>
     /// 二次办理工单满意率-退回部门
     /// </summary>
-    public double ECBLGDMYLTHBM { get; set; }
+    public double ECBLGDMYLTHBM => ECBLJSTHBM == 0 ? 0 : (ECBLGDJSTMBMHFMYD / ECBLJSTHBM) * 100;
 
     /// <summary>
     /// 二次办理工单满意率-退回部门
@@ -288,7 +298,7 @@ public class SnapshotStatisticsOutDto
     /// <summary>
     /// 二次办理工单满意率-回访不满意重办
     /// </summary>
-    public double ECBLGDMYLHFBMYCB { get; set; }
+    public double ECBLGDMYLHFBMYCB => ECBLJS == 0 ? 0 : (ECBLJSHFBMYCB / ECBLJS) * 100;
 
     /// <summary>
     /// 二次办理工单满意率-回访不满意重办