|
@@ -2,6 +2,8 @@
|
|
|
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;
|
|
@@ -28,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)), // 受理范围内派给网格员未回复件数
|
|
@@ -64,28 +68,31 @@ public class BiSnapshotApplication : IBiSnapshotApplication, IScopeDependency
|
|
|
YFG = SqlFunc.AggregateSum(SqlFunc.IIF(redPackAudit.IsSend == true, 1, 0)), //已发(个)
|
|
|
WFLXG = 0, // 无法联系(个)
|
|
|
WJHBG = SqlFunc.AggregateSum(SqlFunc.IIF(record.FailCase == ERedPackPickupFailCase.Excuse, 1, 0)), // 婉拒红包(个)
|
|
|
- WGYYFJLJE = 0, //网格员应发奖励金额
|
|
|
- WGYYFFJLZE = 0, // 网格员已发放奖励总额
|
|
|
- WGYDFFJLZE = 0, // 网格员待发放奖励总额
|
|
|
+ WGYYFJLJE = SqlFunc.AggregateSum(SqlFunc.IIF(guiderAudit.LevelTwoStatus == ERedPackAuditStatus.Agree, guiderAudit.AcutalAmount, 0)), //网格员应发奖励金额
|
|
|
+ WGYYFFJLZE = SqlFunc.AggregateSum(SqlFunc.IIF(guiderAudit.IsSend == true, guiderAudit.AcutalAmount, 0)), // 网格员已发放奖励总额
|
|
|
+ WGYDFFJLZE = SqlFunc.AggregateSum(SqlFunc.IIF(guiderAudit.LevelTwoStatus == ERedPackAuditStatus.Agree && guiderAudit.IsSend == false, guiderAudit.ApprovedAmount, 0)), // 网格员待发放奖励总额
|
|
|
WGYKKZEYF = 0, // 网格员扣款总额(已发)
|
|
|
WGYKKZEDF = 0, // 网格员扣款总额(待发)
|
|
|
- SLFWNDBMHQJJS = 0, // 受理范围内多部门会签件件数
|
|
|
- SLFWNRXZXGDJS = 0, // 受理范围内热线中心归档件数
|
|
|
- RXZXFQHQJJS = 0, // 热线中心发起会签件件数
|
|
|
- AQYH = 0, // 安全隐患
|
|
|
- YWCAQYHZG = 0, // 已完成安全隐患整改
|
|
|
- SQYQGDJS = 0, // 申请延期工单件数
|
|
|
- SQYQGDCS = 0, // 申请延期工单次数
|
|
|
- CQJ = 0, // 超期件
|
|
|
- ECBLJSTHBM = 0, // 二次办理件数 - 退回部门
|
|
|
- ECBLJSHFBMYCB = 0, // 二次办理件数-回访不满意重办
|
|
|
+ SLFWNDBMHQJJS = SqlFunc.AggregateSum(SqlFunc.IIF(order.CounterSignType != null, 1, 0)), // 受理范围内多部门会签件件数
|
|
|
+ SLFWNRXZXGDJS = SqlFunc.AggregateSum(SqlFunc.IIF(order.FileOrgIsCenter == true, 1, 0)), // 受理范围内热线中心归档件数
|
|
|
+ RXZXFQHQJJS = SqlFunc.AggregateSum(SqlFunc.IIF(order.CounterSignType != null && order.CounterSignType == ECounterSignType.Center, 1, 0)), // 热线中心发起会签件件数
|
|
|
+ AQYH = SqlFunc.AggregateSum(SqlFunc.IIF(snapshot.IsDangerDepartment== true, 1, 0)), // 安全隐患
|
|
|
+ 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.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();
|
|
|
}
|