|
@@ -647,7 +647,7 @@ namespace Hotline.Api.Controllers.Bi
|
|
.Select(x => new VisitAndOrgSatisfactionStatisticsDto()
|
|
.Select(x => new VisitAndOrgSatisfactionStatisticsDto()
|
|
{
|
|
{
|
|
OrgCode = x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
|
|
OrgCode = x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
|
|
- TotalSumCount = SqlFunc.AggregateCount(x.VisitOrgCode),
|
|
|
|
|
|
+ TotalSumCount = SqlFunc.AggregateCount(x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))),
|
|
VerySatisfiedCount =SqlFunc.IIF(TypeId==1,SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key")== "5",1,0)),SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude,"Key")=="5",1,0))),//非常满意数
|
|
VerySatisfiedCount =SqlFunc.IIF(TypeId==1,SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key")== "5",1,0)),SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude,"Key")=="5",1,0))),//非常满意数
|
|
SatisfiedCount = SqlFunc.IIF(TypeId==1,SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key" )=="4",1,0)),SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude,"Key")=="4",1,0))), //满意数
|
|
SatisfiedCount = SqlFunc.IIF(TypeId==1,SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key" )=="4",1,0)),SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude,"Key")=="4",1,0))), //满意数
|
|
RegardedAsSatisfiedCount = SqlFunc.IIF(TypeId==1,SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key")== "-1",1,0)),SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude,"Key")=="-1",1,0))),//视为满意
|
|
RegardedAsSatisfiedCount = SqlFunc.IIF(TypeId==1,SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key")== "-1",1,0)),SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude,"Key")=="-1",1,0))),//视为满意
|
|
@@ -729,16 +729,86 @@ namespace Hotline.Api.Controllers.Bi
|
|
/// <param name="LineNum"></param>
|
|
/// <param name="LineNum"></param>
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
[HttpGet("visit-org-statisfaction-org-detail")]
|
|
[HttpGet("visit-org-statisfaction-org-detail")]
|
|
- public async Task VisitAndOrgStatisfactionOrgDetail(DateTime StartDate, DateTime EndDate, string OrgCode, int TypeId, string? LineNum)
|
|
|
|
|
|
+ public async Task<VisitAndOrgSatisfactionStatisticsResultDto> VisitAndOrgStatisfactionOrgDetail(DateTime StartDate, DateTime EndDate, string OrgCode, int TypeId, string? LineNum)
|
|
{
|
|
{
|
|
EndDate = EndDate.AddDays(1).AddSeconds(-1);
|
|
EndDate = EndDate.AddDays(1).AddSeconds(-1);
|
|
- _systemOrganizeRepository.Queryable().Where(x => x.ParentId == OrgCode)
|
|
|
|
- .LeftJoin<OrderVisitDetail>((x, it) => x.Id == it.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")))
|
|
|
|
|
|
+ var list = await _systemOrganizeRepository.Queryable().Where(x => x.Id.StartsWith(OrgCode))
|
|
|
|
+ .LeftJoin<OrderVisitDetail>((x, it) => x.Id == it.VisitOrgCode)
|
|
.Where((x, it) => it.OrderVisit.VisitTime >= StartDate && it.OrderVisit.VisitTime <= EndDate && it.VisitTarget == EVisitTarget.Org && it.OrderVisit.VisitState == EVisitState.Visited)
|
|
.Where((x, it) => it.OrderVisit.VisitTime >= StartDate && it.OrderVisit.VisitTime <= EndDate && it.VisitTarget == EVisitTarget.Org && it.OrderVisit.VisitState == EVisitState.Visited)
|
|
- .WhereIF(!string.IsNullOrEmpty(LineNum),(x,it)=>it.OrderVisit.Order.CallRecord.Gateway.Contains(LineNum));
|
|
|
|
- //var list = await _orderVisitDetailRepository.Queryable()
|
|
|
|
- // .Where(x => x.OrderVisit.VisitTime >= StartDate && x.OrderVisit.VisitTime <= EndDate && x.VisitTarget == EVisitTarget.Org && x.OrderVisit.VisitState == EVisitState.Visited && !string.IsNullOrEmpty(x.VisitOrgCode))
|
|
|
|
- // .Where(x=>x.VisitOrgCode.StartsWith(OrgCode) && )
|
|
|
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(LineNum),(x,it)=>it.OrderVisit.Order.CallRecord.Gateway.Contains(LineNum))
|
|
|
|
+ .GroupBy((x,it) => new {
|
|
|
|
+ VisitOrgCode = it.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("9"))
|
|
|
|
+ })
|
|
|
|
+ .Select((x,it) => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
|
+ {
|
|
|
|
+ OrgCode = it.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("9")),
|
|
|
|
+ TotalSumCount = SqlFunc.AggregateCount(it.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("9"))),
|
|
|
|
+ VerySatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "5", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "5", 1, 0))),//非常满意数
|
|
|
|
+ SatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "4", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "4", 1, 0))), //满意数
|
|
|
|
+ RegardedAsSatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "-1", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "-1", 1, 0))),//视为满意
|
|
|
|
+ DefaultSatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "0", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "0", 1, 0))),//默认满意
|
|
|
|
+ NoSatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "2", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "2", 1, 0))),//不满意
|
|
|
|
+ NoEvaluateCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "7", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "7", 1, 0))),//未做评价
|
|
|
|
+ NoPutThroughCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgProcessingResults, "Key") == "6", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(it.OrgHandledAttitude, "Key") == "6", 1, 0)))//未接通
|
|
|
|
+ })
|
|
|
|
+ .MergeTable()
|
|
|
|
+ .LeftJoin<SystemOrganize>((x, it) => x.OrgCode == it.Id)
|
|
|
|
+ .Select((x, it) => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
|
+ {
|
|
|
|
+ OrgName = it.Name,
|
|
|
|
+ OrgCode = x.OrgCode,
|
|
|
|
+ OrgType = it.OrgType,
|
|
|
|
+ TotalSumCount = x.TotalSumCount,
|
|
|
|
+ VerySatisfiedCount = x.VerySatisfiedCount,//非常满意数
|
|
|
|
+ SatisfiedCount = x.SatisfiedCount, //满意数
|
|
|
|
+ RegardedAsSatisfiedCount = x.RegardedAsSatisfiedCount,//视为满意
|
|
|
|
+ DefaultSatisfiedCount = x.DefaultSatisfiedCount,//默认满意
|
|
|
|
+ NoSatisfiedCount = x.NoSatisfiedCount,//不满意
|
|
|
|
+ NoEvaluateCount = x.NoEvaluateCount,//未做评价
|
|
|
|
+ NoPutThroughCount = x.NoPutThroughCount,//未接通
|
|
|
|
+ })
|
|
|
|
+ .ToListAsync();
|
|
|
|
+
|
|
|
|
+ var countySumModel = new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
|
+ {
|
|
|
|
+ OrgName = "区县合计",
|
|
|
|
+ TotalSumCount = list.Where(x => x.OrgType == EOrgType.County).Sum(x => x.TotalSumCount),
|
|
|
|
+ VerySatisfiedCount = list.Where(x => x.OrgType == EOrgType.County).Sum(x => x.VerySatisfiedCount),
|
|
|
|
+ SatisfiedCount = list.Where(x => x.OrgType == EOrgType.County).Sum(x => x.SatisfiedCount),
|
|
|
|
+ RegardedAsSatisfiedCount = list.Where(x => x.OrgType == EOrgType.County).Sum(x => x.RegardedAsSatisfiedCount),
|
|
|
|
+ DefaultSatisfiedCount = list.Where(x => x.OrgType == EOrgType.County).Sum(x => x.DefaultSatisfiedCount),
|
|
|
|
+ NoSatisfiedCount = list.Where(x => x.OrgType == EOrgType.County).Sum(x => x.NoSatisfiedCount),
|
|
|
|
+ NoEvaluateCount = list.Where(x => x.OrgType == EOrgType.County).Sum(x => x.NoEvaluateCount),
|
|
|
|
+ NoPutThroughCount = list.Where(x => x.OrgType == EOrgType.County).Sum(x => x.NoPutThroughCount),
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ var citySumModel = new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
|
+ {
|
|
|
|
+ OrgName = "市直合计",
|
|
|
|
+ TotalSumCount = list.Where(x => x.OrgType == EOrgType.City).Sum(x => x.TotalSumCount),
|
|
|
|
+ VerySatisfiedCount = list.Where(x => x.OrgType == EOrgType.City).Sum(x => x.VerySatisfiedCount),
|
|
|
|
+ SatisfiedCount = list.Where(x => x.OrgType == EOrgType.City).Sum(x => x.SatisfiedCount),
|
|
|
|
+ RegardedAsSatisfiedCount = list.Where(x => x.OrgType == EOrgType.City).Sum(x => x.RegardedAsSatisfiedCount),
|
|
|
|
+ DefaultSatisfiedCount = list.Where(x => x.OrgType == EOrgType.City).Sum(x => x.DefaultSatisfiedCount),
|
|
|
|
+ NoSatisfiedCount = list.Where(x => x.OrgType == EOrgType.City).Sum(x => x.NoSatisfiedCount),
|
|
|
|
+ NoEvaluateCount = list.Where(x => x.OrgType == EOrgType.City).Sum(x => x.NoEvaluateCount),
|
|
|
|
+ NoPutThroughCount = list.Where(x => x.OrgType == EOrgType.City).Sum(x => x.NoPutThroughCount),
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ var sumModel = new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
|
+ {
|
|
|
|
+ OrgName = "总计",
|
|
|
|
+ TotalSumCount = list.Sum(x => x.TotalSumCount),
|
|
|
|
+ VerySatisfiedCount = list.Sum(x => x.VerySatisfiedCount),
|
|
|
|
+ SatisfiedCount = list.Sum(x => x.SatisfiedCount),
|
|
|
|
+ RegardedAsSatisfiedCount = list.Sum(x => x.RegardedAsSatisfiedCount),
|
|
|
|
+ DefaultSatisfiedCount = list.Sum(x => x.DefaultSatisfiedCount),
|
|
|
|
+ NoSatisfiedCount = list.Sum(x => x.NoSatisfiedCount),
|
|
|
|
+ NoEvaluateCount = list.Sum(x => x.NoEvaluateCount),
|
|
|
|
+ NoPutThroughCount = list.Sum(x => x.NoPutThroughCount),
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ return new VisitAndOrgSatisfactionStatisticsResultDto { DataList = list, CountySumModel = countySumModel, CitySumModel = citySumModel, SumModel = sumModel };
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|