|
@@ -40,6 +40,8 @@ using XF.Domain.Exceptions;
|
|
|
using XF.Domain.Filters;
|
|
|
using XF.Domain.Repository;
|
|
|
using XF.Utility.EnumExtensions;
|
|
|
+using DocumentFormat.OpenXml.Drawing;
|
|
|
+using DocumentFormat.OpenXml.Bibliography;
|
|
|
|
|
|
namespace Hotline.Api.Controllers.Bi
|
|
|
{
|
|
@@ -1880,21 +1882,82 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
if (callData != null)
|
|
|
callData.InvalidCount = callData.InvalidCount - callData.QueueByeCount - callData.IvrByeCount;
|
|
|
centerReportStatisticsDto.CenterReportCall = callData;
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region 语音分类
|
|
|
+ var callTypeDto = await _trCallRecordRepository.Queryable()
|
|
|
+ .Where(x => x.CreatedTime >= StartTime && x.CreatedTime <= EndTime && SqlFunc.Length(x.Gateway) > 4 && x.CallDirection == ECallDirection.In)
|
|
|
+ .GroupBy(x => x.CreatedTime.ToString("yyyy-MM-dd"))
|
|
|
+ .Select(x => new IVRCallTypeDto()
|
|
|
+ {
|
|
|
+ PersonCallInCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "1", 1, 0)),
|
|
|
+ EnterpriseCallInCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.IvrDtmf.Substring(x.IvrDtmf.Length - 1, 1) == "2", 1, 0)),
|
|
|
+ AiCallInCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Gateway == "82826886", 1, 0)),
|
|
|
+ }).FirstAsync();
|
|
|
+ centerReportStatisticsDto.iVRCallTypeDto = callTypeDto;
|
|
|
#endregion
|
|
|
|
|
|
#region 工单
|
|
|
- //工单
|
|
|
+ //工单 信件情况
|
|
|
var orderData = await _orderRepository.Queryable()
|
|
|
- .Where(p => p.CreationTime >= StartTime && p.CreationTime <= EndTime)
|
|
|
- .Select(x => new CenterReportOrderDto
|
|
|
- {
|
|
|
+ .LeftJoin<SystemOrganize>((x,so) => x.ActualHandleOrgCode == so.Id)
|
|
|
+ .Where((x, so) => x.CreationTime >= StartTime && x.CreationTime <= EndTime)
|
|
|
+ .Select((x, so) => new CenterReportOrderDto
|
|
|
+ {
|
|
|
EffectiveCount = SqlFunc.AggregateSum(SqlFunc.IIF(true, 1, 0)),
|
|
|
InvalidCount = 0,
|
|
|
CompletedCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >= EOrderStatus.Filed, 1, 0)),
|
|
|
- InProgressCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status < EOrderStatus.Filed, 1, 0))
|
|
|
- })
|
|
|
+ InProgressCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status < EOrderStatus.Filed, 1, 0)),
|
|
|
+ CityAccept = SqlFunc.AggregateSum(SqlFunc.IIF(so.OrgType == EOrgType.City, 1, 0)),
|
|
|
+ CountyAccept = SqlFunc.AggregateSum(SqlFunc.IIF(so.OrgType == EOrgType.County, 1, 0)),
|
|
|
+ CenterAccept = SqlFunc.AggregateSum(SqlFunc.IIF(so.IsCenter, 1, 0)),
|
|
|
+ })
|
|
|
.FirstAsync();
|
|
|
centerReportStatisticsDto.CenterReportOrder = orderData;
|
|
|
+
|
|
|
+
|
|
|
+ //工单按时办结情况
|
|
|
+ var orderCompletedData = await _orderRepository.Queryable()
|
|
|
+ .LeftJoin<SystemOrganize>((x, so) => x.FileUserOrgId == so.Id)
|
|
|
+ .Where((x, so) => x.CreationTime >= StartTime && x.CreationTime <= EndTime && x.Status >= EOrderStatus.Filed)
|
|
|
+ .Select((x, so) => new OrderCompletedDto
|
|
|
+ {
|
|
|
+ CompletedCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >= EOrderStatus.Filed, 1, 0)),
|
|
|
+ ExpiredTimeCompletedCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >= EOrderStatus.Filed && x.ExpiredTime > x.ActualHandleTime, 1, 0)),//超期已办
|
|
|
+ CityExpiredTimeCompletedCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >= EOrderStatus.Filed && x.ExpiredTime > x.ActualHandleTime && so.OrgType == EOrgType.City, 1, 0)),//市级超期已办
|
|
|
+ CountyExpiredTimeCompletedCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >= EOrderStatus.Filed && x.ExpiredTime > x.ActualHandleTime && so.OrgType == EOrgType.County, 1, 0)),//区县超期已办
|
|
|
+ CenterExpiredTimeCompletedCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >= EOrderStatus.Filed && x.ExpiredTime > x.ActualHandleTime && so.IsCenter, 1, 0)),//中心超期已办
|
|
|
+ CityCompletedCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >= EOrderStatus.Filed && so.OrgType == EOrgType.City, 1, 0)),
|
|
|
+ CountyCompletedCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >= EOrderStatus.Filed && so.OrgType == EOrgType.County, 1, 0)),
|
|
|
+ CenterCompletedCount = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >= EOrderStatus.Filed && so.IsCenter, 1, 0)),
|
|
|
+ })
|
|
|
+ .FirstAsync();
|
|
|
+ centerReportStatisticsDto.orderCompletedDto = orderCompletedData;
|
|
|
+
|
|
|
+ //工单办理时效
|
|
|
+ var orderAgingData = await _orderRepository.Queryable()
|
|
|
+ .LeftJoin<SystemOrganize>((x, so) => x.FileUserOrgId == so.Id)
|
|
|
+ .Where((x, so) => x.CreationTime >= StartTime && x.CreationTime <= EndTime && x.Status >= EOrderStatus.Filed)
|
|
|
+ .Select((x, so) => new {
|
|
|
+ FileOrgIsCenter = x.FileOrgIsCenter.Value,
|
|
|
+ CreationTimeHandleDurationWorkday = x.CreationTimeHandleDurationWorkday.HasValue? x.CreationTimeHandleDurationWorkday : 0,
|
|
|
+ CenterToOrgHandleDurationWorkday = x.CenterToOrgHandleDurationWorkday.HasValue ? x.CenterToOrgHandleDurationWorkday : 0,
|
|
|
+ OrgType = so.OrgType
|
|
|
+ })
|
|
|
+ .MergeTable()
|
|
|
+ .Select(temp => new OrderAgingDto
|
|
|
+ {
|
|
|
+ OrderCount = SqlFunc.AggregateSum(SqlFunc.IIF(true, 1, 0)),
|
|
|
+ CompletedAging = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter, temp.CreationTimeHandleDurationWorkday, temp.CenterToOrgHandleDurationWorkday)),
|
|
|
+ CityOrderCount = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter == false && temp.OrgType == EOrgType.City, 1, 0)),//市级
|
|
|
+ CityCompletedAging = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter == false && temp.OrgType == EOrgType.City, temp.CenterToOrgHandleDurationWorkday,0)),
|
|
|
+ CountyOrderCount = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter == false && temp.OrgType == EOrgType.County, 1, 0)),//区县
|
|
|
+ CountyCompletedAging = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter == false && temp.OrgType == EOrgType.County, temp.CenterToOrgHandleDurationWorkday, 0)),
|
|
|
+ CenterOrderCount = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter, 1, 0)),//中心
|
|
|
+ CenterCompletedAging = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter, temp.CreationTimeHandleDurationWorkday, 0)),
|
|
|
+ })
|
|
|
+ .FirstAsync();
|
|
|
+ centerReportStatisticsDto.orderAgingDto = orderAgingData;
|
|
|
#endregion
|
|
|
|
|
|
#region 信件来源
|
|
@@ -1942,14 +2005,18 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
.Where(p => p.CreationTime >= StartTime && p.CreationTime <= EndTime)
|
|
|
.Select(it => new
|
|
|
{
|
|
|
- AcceptTypeCode = SqlFunc.IIF(SqlFunc.IsNullOrEmpty(it.AcceptTypeCode), "40", it.AcceptTypeCode)
|
|
|
+ AcceptTypeCode = SqlFunc.IIF(SqlFunc.IsNullOrEmpty(it.AcceptTypeCode), "40", it.AcceptTypeCode),
|
|
|
+ FileOrgIsCenter = it.FileOrgIsCenter.HasValue ? it.FileOrgIsCenter : true,
|
|
|
+ CreationTimeHandleDurationWorkday = it.CreationTimeHandleDurationWorkday.HasValue ? it.CenterToOrgHandleDurationWorkday : 0,
|
|
|
+ CenterToOrgHandleDurationWorkday = it.CenterToOrgHandleDurationWorkday.HasValue ? it.CenterToOrgHandleDurationWorkday : 0,
|
|
|
})
|
|
|
.MergeTable()//将查询出来的结果合并成一个新表
|
|
|
- .GroupBy(it => new { it.AcceptTypeCode })//对新表进行分组
|
|
|
- .Select(it => new CenterReportOrderSourceChannelDto
|
|
|
+ .GroupBy(temp => new { temp.AcceptTypeCode })//对新表进行分组
|
|
|
+ .Select(temp => new CenterReportOrderSourceChannelDto
|
|
|
{
|
|
|
- Code = it.AcceptTypeCode,
|
|
|
- CountNum = SqlFunc.AggregateCount(it.AcceptTypeCode)
|
|
|
+ Code = temp.AcceptTypeCode,
|
|
|
+ CountNum = SqlFunc.AggregateCount(temp.AcceptTypeCode),
|
|
|
+ CompletedAging = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter == true, temp.CreationTimeHandleDurationWorkday, temp.CenterToOrgHandleDurationWorkday))
|
|
|
})
|
|
|
.ToListAsync();
|
|
|
List<CenterReportOrderSourceChannelDto> acceptType = new();
|
|
@@ -1961,8 +2028,9 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
AllCountNum = sourceChannelCount,
|
|
|
Name = item.DicDataName,
|
|
|
Code = item.DicTypeCode,
|
|
|
- CountNum = acceptTypeData.Find(p => p.Code == item.DicDataValue)?.CountNum ?? 0
|
|
|
- });
|
|
|
+ CountNum = acceptTypeData.Find(p => p.Code == item.DicDataValue)?.CountNum ?? 0,
|
|
|
+ CompletedAging = acceptTypeData.Find(p => p.Code == item.DicDataValue)?.CompletedAging ?? 0
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
centerReportStatisticsDto.CenterReportOrderAcceptTypes = acceptType;
|
|
@@ -1977,49 +2045,101 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
WaitVisitd = await _orderVisitRepository.Queryable()
|
|
|
.Where(x => x.VisitTime >= StartTime && x.VisitTime <= EndTime && x.VisitState != EVisitState.None && x.VisitState != EVisitState.Visited).CountAsync()
|
|
|
};
|
|
|
-
|
|
|
- //部门
|
|
|
- var listOrg = await _orderVisitDetailRepository.Queryable()
|
|
|
+ //
|
|
|
+ var data = await _orderVisitDetailRepository.Queryable()
|
|
|
.LeftJoin<OrderVisit>((it, o) => it.VisitId == o.Id)
|
|
|
- .Where((it, o) => it.VisitTarget == EVisitTarget.Org && o.VisitTime >= StartTime && o.VisitTime <= EndTime && o.VisitState == EVisitState.Visited)
|
|
|
- .Select((it, o) => new Satisfaction
|
|
|
+ .LeftJoin<SystemOrganize>((it, o, so) => it.VisitOrgCode == so.Id)
|
|
|
+ .Where((it, o, so) => it.VisitTarget == EVisitTarget.Org && o.VisitTime >= StartTime && o.VisitTime <= EndTime && o.VisitState == EVisitState.Visited)
|
|
|
+ .Select((it, o, so) => new
|
|
|
{
|
|
|
Dissatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") || SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2"), 1, 0)),
|
|
|
Satisfied = SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") || SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2"), 0, 1)),
|
|
|
+ CityDissatisfied = SqlFunc.AggregateSum(SqlFunc.IIF((SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") || SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2")) && so.OrgType == EOrgType.City, 1, 0)),
|
|
|
+ CitySatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(!SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") && !SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2") && so.OrgType == EOrgType.City, 1, 0)),
|
|
|
+ CountyDissatisfied = SqlFunc.AggregateSum(SqlFunc.IIF((SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") || SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2")) && so.OrgType == EOrgType.County, 1, 0)),
|
|
|
+ CountySatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(!SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") && !SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2") && so.OrgType == EOrgType.County, 1, 0)),
|
|
|
+ CenterDissatisfied = SqlFunc.AggregateSum(SqlFunc.IIF((SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") || SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2")) && so.IsCenter, 1, 0)),
|
|
|
+ CenterSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(!SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") && !SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2") && so.IsCenter, 1, 0)),
|
|
|
+ OrgDissatisfied = SqlFunc.AggregateSum(SqlFunc.IIF((SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") || SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2")) && !so.IsCenter, 1, 0)),
|
|
|
+ OrgSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(!SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") && !SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2") && !so.IsCenter, 1, 0)),
|
|
|
})
|
|
|
- .ToListAsync();
|
|
|
-
|
|
|
- if (listOrg != null && listOrg.Count > 0)
|
|
|
- {
|
|
|
- var SatisfiedCount = listOrg[0].Satisfied + listOrg[0].Satisfied;
|
|
|
- if (SatisfiedCount > 0 && listOrg[0].Satisfied > 0)
|
|
|
- centerReportVisitd.OrgRate = Math.Round((listOrg[0].Satisfied / (double)SatisfiedCount) * 100, 2);
|
|
|
- }
|
|
|
-
|
|
|
- //if (centerReportVisitd.Visitd > 0 && listOrg != null && listOrg.Count > 0 && listOrg[0].Satisfied > 0)
|
|
|
- //centerReportVisitd.OrgRate = Math.Round((listOrg[0].Satisfied / (double)centerReportVisitd.Visitd) * 100, 2);
|
|
|
-
|
|
|
- //坐席
|
|
|
- var listSet = await _orderVisitDetailRepository.Queryable()
|
|
|
- .LeftJoin<OrderVisit>((it, o) => it.VisitId == o.Id)
|
|
|
- .Where((it, o) => it.VisitTarget == EVisitTarget.Seat && o.VisitTime >= StartTime && o.VisitTime <= EndTime && o.VisitState == EVisitState.Visited)
|
|
|
- .Select((it, o) => new Satisfaction
|
|
|
- {
|
|
|
- Dissatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(it.SeatEvaluate == ESeatEvaluate.NoSatisfied, 1, 0)),
|
|
|
- Satisfied = SqlFunc.AggregateSum(SqlFunc.IIF(it.SeatEvaluate != ESeatEvaluate.NoSatisfied, 1, 0)),
|
|
|
- }).ToListAsync();
|
|
|
-
|
|
|
- if (listSet != null && listSet.Count > 0)
|
|
|
- {
|
|
|
- var SatisfiedCount = listSet[0].Satisfied + listSet[0].Satisfied;
|
|
|
- if (SatisfiedCount > 0 && listSet[0].Satisfied > 0)
|
|
|
- centerReportVisitd.OrgRate = Math.Round((listSet[0].Satisfied / (double)SatisfiedCount) * 100, 2);
|
|
|
- }
|
|
|
-
|
|
|
- //if (centerReportVisitd.Visitd > 0 && listSet != null && listSet.Count > 0 && listSet[0].Satisfied > 0)
|
|
|
- // centerReportVisitd.SeatsRate = Math.Round((listSet[0].Satisfied / (double)centerReportVisitd.Visitd) * 100, 2);
|
|
|
-
|
|
|
- centerReportStatisticsDto.CenterReportVisitd = centerReportVisitd;
|
|
|
+ .FirstAsync();
|
|
|
+ if (data.Satisfied > 0)
|
|
|
+ {
|
|
|
+ var count = data.Satisfied + data.Dissatisfied;
|
|
|
+ centerReportVisitd.AllRate = Math.Round((data.Satisfied / (double)count) * 100, 2);
|
|
|
+ }
|
|
|
+ if (data.OrgSatisfied > 0)
|
|
|
+ {
|
|
|
+ var count = data.OrgSatisfied + data.OrgDissatisfied;
|
|
|
+ centerReportVisitd.OrgRate = Math.Round((data.OrgSatisfied / (double)count) * 100, 2);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (data.CitySatisfied > 0)
|
|
|
+ {
|
|
|
+ var count = data.CitySatisfied + data.CityDissatisfied;
|
|
|
+ centerReportVisitd.CityRate = Math.Round((data.CitySatisfied / (double)count) * 100, 2);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (data.CountySatisfied > 0)
|
|
|
+ {
|
|
|
+ var count = data.CountySatisfied + data.CountyDissatisfied;
|
|
|
+ centerReportVisitd.CountyRate = Math.Round((data.CountySatisfied / (double)count) * 100, 2);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (data.CenterSatisfied > 0)
|
|
|
+ {
|
|
|
+ var count = data.CenterSatisfied + data.CenterDissatisfied;
|
|
|
+ centerReportVisitd.CenterRate = Math.Round((data.CenterSatisfied / (double)count) * 100, 2);
|
|
|
+ }
|
|
|
+ centerReportVisitd.Dissatisfied = data.Dissatisfied;
|
|
|
+ centerReportVisitd.CityDissatisfied = data.CityDissatisfied;
|
|
|
+ centerReportVisitd.CountyDissatisfied = data.CountyDissatisfied;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //部门
|
|
|
+ //var listOrg = await _orderVisitDetailRepository.Queryable()
|
|
|
+ // .LeftJoin<OrderVisit>((it, o) => it.VisitId == o.Id)
|
|
|
+ // .Where((it, o) => it.VisitTarget == EVisitTarget.Org && o.VisitTime >= StartTime && o.VisitTime <= EndTime && o.VisitState == EVisitState.Visited)
|
|
|
+ // .Select((it, o) => new Satisfaction
|
|
|
+ // {
|
|
|
+ // Dissatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") || SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2"), 1, 0)),
|
|
|
+ // Satisfied = SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") || SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2"), 0, 1)),
|
|
|
+ // })
|
|
|
+ // .ToListAsync();
|
|
|
+
|
|
|
+ //if (listOrg != null && listOrg.Count > 0)
|
|
|
+ //{
|
|
|
+ // var SatisfiedCount = listOrg[0].Satisfied + listOrg[0].Satisfied;
|
|
|
+ // if (SatisfiedCount > 0 && listOrg[0].Satisfied > 0)
|
|
|
+ // centerReportVisitd.OrgRate = Math.Round((listOrg[0].Satisfied / (double)SatisfiedCount) * 100, 2);
|
|
|
+ //}
|
|
|
+
|
|
|
+ ////if (centerReportVisitd.Visitd > 0 && listOrg != null && listOrg.Count > 0 && listOrg[0].Satisfied > 0)
|
|
|
+ ////centerReportVisitd.OrgRate = Math.Round((listOrg[0].Satisfied / (double)centerReportVisitd.Visitd) * 100, 2);
|
|
|
+
|
|
|
+ ////坐席
|
|
|
+ //var listSet = await _orderVisitDetailRepository.Queryable()
|
|
|
+ // .LeftJoin<OrderVisit>((it, o) => it.VisitId == o.Id)
|
|
|
+ // .Where((it, o) => it.VisitTarget == EVisitTarget.Seat && o.VisitTime >= StartTime && o.VisitTime <= EndTime && o.VisitState == EVisitState.Visited)
|
|
|
+ // .Select((it, o) => new Satisfaction
|
|
|
+ // {
|
|
|
+ // Dissatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(it.SeatEvaluate == ESeatEvaluate.NoSatisfied, 1, 0)),
|
|
|
+ // Satisfied = SqlFunc.AggregateSum(SqlFunc.IIF(it.SeatEvaluate != ESeatEvaluate.NoSatisfied, 1, 0)),
|
|
|
+ // }).ToListAsync();
|
|
|
+
|
|
|
+ //if (listSet != null && listSet.Count > 0)
|
|
|
+ //{
|
|
|
+ // var SatisfiedCount = listSet[0].Satisfied + listSet[0].Satisfied;
|
|
|
+ // if (SatisfiedCount > 0 && listSet[0].Satisfied > 0)
|
|
|
+ // centerReportVisitd.OrgRate = Math.Round((listSet[0].Satisfied / (double)SatisfiedCount) * 100, 2);
|
|
|
+ //}
|
|
|
+
|
|
|
+ //if (centerReportVisitd.Visitd > 0 && listSet != null && listSet.Count > 0 && listSet[0].Satisfied > 0)
|
|
|
+ // centerReportVisitd.SeatsRate = Math.Round((listSet[0].Satisfied / (double)centerReportVisitd.Visitd) * 100, 2);
|
|
|
+
|
|
|
+ centerReportStatisticsDto.CenterReportVisitd = centerReportVisitd;
|
|
|
#endregion
|
|
|
|
|
|
#region 信件分布情况
|
|
@@ -2079,7 +2199,60 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
};
|
|
|
#endregion
|
|
|
|
|
|
- return centerReportStatisticsDto;
|
|
|
+ #region 企业服务办件情况
|
|
|
+ var enterpriseOrderDto = await _orderRepository.Queryable()
|
|
|
+ .LeftJoin<SystemOrganize>((x, so) => x.ActualHandleOrgCode == so.Id)
|
|
|
+ .Where((x, so) => x.CreationTime >= StartTime && x.CreationTime <= EndTime && x.IdentityType == EIdentityType.Enterprise)
|
|
|
+ .Select((x, so) => new
|
|
|
+ {
|
|
|
+ FileOrgIsCenter = x.FileOrgIsCenter.Value,
|
|
|
+ CreationTimeHandleDurationWorkday = x.CreationTimeHandleDurationWorkday.HasValue ? x.CreationTimeHandleDurationWorkday : 0,
|
|
|
+ CenterToOrgHandleDurationWorkday = x.CenterToOrgHandleDurationWorkday.HasValue ? x.CenterToOrgHandleDurationWorkday : 0,
|
|
|
+ OrgType = so.OrgType
|
|
|
+ })
|
|
|
+ .MergeTable()
|
|
|
+ .Select(temp => new EnterpriseOrderDto
|
|
|
+ {
|
|
|
+ OrderCount = SqlFunc.AggregateSum(SqlFunc.IIF(true, 1, 0)),
|
|
|
+ CompletedAging = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter, temp.CreationTimeHandleDurationWorkday, temp.CenterToOrgHandleDurationWorkday)),
|
|
|
+ CityOrderCount = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter == false && temp.OrgType == EOrgType.City, 1, 0)),//市级
|
|
|
+ CityCompletedAging = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter == false && temp.OrgType == EOrgType.City, temp.CenterToOrgHandleDurationWorkday, 0)),
|
|
|
+ CountyOrderCount = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter == false && temp.OrgType == EOrgType.County, 1, 0)),//区县
|
|
|
+ CountyCompletedAging = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter == false && temp.OrgType == EOrgType.County, temp.CenterToOrgHandleDurationWorkday, 0)),
|
|
|
+ CenterOrderCount = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter, 1, 0)),//中心
|
|
|
+ CenterCompletedAging = SqlFunc.AggregateSum(SqlFunc.IIF(temp.FileOrgIsCenter, temp.CreationTimeHandleDurationWorkday, 0)),
|
|
|
+ })
|
|
|
+ .FirstAsync();
|
|
|
+
|
|
|
+ centerReportStatisticsDto.enterpriseOrderDto = enterpriseOrderDto;
|
|
|
+ var enterpriseOrderDto2 = await _orderVisitDetailRepository.Queryable()
|
|
|
+ .Includes(it=>it.OrderVisit,ov=>ov.Order)
|
|
|
+ .LeftJoin<SystemOrganize>((it, so) => it.VisitOrgCode == so.Id)
|
|
|
+ .Where((it, so) => it.VisitTarget == EVisitTarget.Org && it.OrderVisit.VisitTime >= StartTime && it.OrderVisit.VisitTime <= EndTime && it.OrderVisit.VisitState == EVisitState.Visited)
|
|
|
+ .GroupBy((it,so)=>it.Id)
|
|
|
+ .Select((it, so) => new EnterpriseOrderDto
|
|
|
+ {
|
|
|
+ VisitdCount = SqlFunc.AggregateSum(SqlFunc.IIF(true, 1, 0)),
|
|
|
+ Dissatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") || SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2"), 1, 0)),
|
|
|
+ Satisfied = SqlFunc.AggregateSum(SqlFunc.IIF(!SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") && !SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2"), 1, 0)),
|
|
|
+ CityDissatisfied = SqlFunc.AggregateSum(SqlFunc.IIF((SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") || SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2")) && so.OrgType == EOrgType.City, 1, 0)),
|
|
|
+ CitySatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(!SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") && !SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2") && so.OrgType == EOrgType.City, 1, 0)),
|
|
|
+ CountyDissatisfied = SqlFunc.AggregateSum(SqlFunc.IIF((SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") || SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2")) && so.OrgType == EOrgType.County, 1, 0)),
|
|
|
+ CountySatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(!SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "1") && !SqlFunc.JsonListObjectAny(it.OrgProcessingResults, "key", "2") && so.OrgType == EOrgType.County, 1, 0)),
|
|
|
+ })
|
|
|
+ .FirstAsync();
|
|
|
+
|
|
|
+ centerReportStatisticsDto.enterpriseOrderDto.VisitdCount = enterpriseOrderDto2.VisitdCount;
|
|
|
+ centerReportStatisticsDto.enterpriseOrderDto.Dissatisfied = enterpriseOrderDto2.Dissatisfied;
|
|
|
+ centerReportStatisticsDto.enterpriseOrderDto.CityDissatisfied = enterpriseOrderDto2.CityDissatisfied;
|
|
|
+ centerReportStatisticsDto.enterpriseOrderDto.CountyDissatisfied = enterpriseOrderDto2.CountyDissatisfied;
|
|
|
+ centerReportStatisticsDto.enterpriseOrderDto.Satisfied = enterpriseOrderDto2.Satisfied;
|
|
|
+ centerReportStatisticsDto.enterpriseOrderDto.CitySatisfied = enterpriseOrderDto2.CitySatisfied;
|
|
|
+ centerReportStatisticsDto.enterpriseOrderDto.CountySatisfied = enterpriseOrderDto2.CountySatisfied;
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ return centerReportStatisticsDto;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -2165,7 +2338,7 @@ namespace Hotline.Api.Controllers.Bi
|
|
|
{
|
|
|
var satisfiedCount = listSet.Satisfied + listSet.Dissatisfied;
|
|
|
if (satisfiedCount > 0 && listSet.Satisfied > 0)
|
|
|
- centerReportVisitd.OrgRate = Math.Round((listSet.Satisfied / (double)satisfiedCount) * 100, 2);
|
|
|
+ centerReportVisitd.SeatsRate = Math.Round((listSet.Satisfied / (double)satisfiedCount) * 100, 2);
|
|
|
}
|
|
|
|
|
|
centerReportStatisticsDto.CenterReportVisitd = centerReportVisitd;
|