|
@@ -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();
|
|
|
}
|