|
@@ -861,95 +861,11 @@ namespace Hotline.Api.Controllers.Bi
|
|
/// <param name="LineNum"></param>
|
|
/// <param name="LineNum"></param>
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
[HttpGet("visit-org-satisfaction-statistics")]
|
|
[HttpGet("visit-org-satisfaction-statistics")]
|
|
- public async Task<VisitAndOrgSatisfactionStatisticsResultDto> VisitAndOrgSatisfactionStatistics(DateTime StartDate, DateTime EndDate, string OrgName, int TypeId, string? LineNum)
|
|
|
|
|
|
+ public async Task<VisitAndOrgSatisfactionStatisticsResultDto> VisitAndOrgSatisfactionStatistics([FromBody] PagedKeywordSonRequest dto)
|
|
{
|
|
{
|
|
- EndDate = EndDate.AddDays(1).AddSeconds(-1);
|
|
|
|
-
|
|
|
|
- bool IsCenter = _sessionContext.OrgIsCenter;
|
|
|
|
-
|
|
|
|
- var list = _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))
|
|
|
|
- .WhereIF(string.IsNullOrEmpty(OrgName) == false, x => x.VisitOrgName.Contains(OrgName))
|
|
|
|
- .WhereIF(string.IsNullOrEmpty(LineNum) == false, x => x.OrderVisit.Order.CallRecord.Gateway.Contains(LineNum))
|
|
|
|
- .WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(_sessionContext.OrgId));
|
|
|
|
|
|
+ var data = await _orderApplication.VisitAndOrgSatisfactionStatistics(dto);
|
|
|
|
|
|
- var data = new List<VisitAndOrgSatisfactionStatisticsDto>();
|
|
|
|
-
|
|
|
|
- if (IsCenter && list != null)
|
|
|
|
- {
|
|
|
|
- data = await list.GroupBy(x => new
|
|
|
|
- {
|
|
|
|
- VisitOrgCode = x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))
|
|
|
|
- })
|
|
|
|
- .Select(x => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
|
- {
|
|
|
|
- OrgCode = x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
|
|
|
|
- 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))),//非常满意数
|
|
|
|
- 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))),//视为满意
|
|
|
|
- DefaultSatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "0", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "0", 1, 0))),//默认满意
|
|
|
|
- NoSatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "2", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "2", 1, 0))),//不满意
|
|
|
|
- NoEvaluateCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "7", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "7", 1, 0))),//未做评价
|
|
|
|
- NoPutThroughCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "6", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "6", 1, 0))),//未接通
|
|
|
|
- })
|
|
|
|
- .MergeTable()
|
|
|
|
- .LeftJoin<SystemOrganize>((it, o) => it.OrgCode == o.Id)
|
|
|
|
- .Select((it, o) => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
|
- {
|
|
|
|
- OrgName = o.Name,
|
|
|
|
- OrgCode = it.OrgCode,
|
|
|
|
- OrgType = o.OrgType,
|
|
|
|
- TotalSumCount = it.TotalSumCount,
|
|
|
|
- VerySatisfiedCount = it.VerySatisfiedCount,//非常满意数
|
|
|
|
- SatisfiedCount = it.SatisfiedCount, //满意数
|
|
|
|
- RegardedAsSatisfiedCount = it.RegardedAsSatisfiedCount,//视为满意
|
|
|
|
- DefaultSatisfiedCount = it.DefaultSatisfiedCount,//默认满意
|
|
|
|
- NoSatisfiedCount = it.NoSatisfiedCount,//不满意
|
|
|
|
- NoEvaluateCount = it.NoEvaluateCount,//未做评价
|
|
|
|
- NoPutThroughCount = it.NoPutThroughCount,//未接通
|
|
|
|
- })
|
|
|
|
- .ToListAsync();
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- data = await list.GroupBy(x => new
|
|
|
|
- {
|
|
|
|
- x.VisitOrgCode
|
|
|
|
- })
|
|
|
|
- .Select(x => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
|
- {
|
|
|
|
- OrgCode = 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))),//非常满意数
|
|
|
|
- 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))),//视为满意
|
|
|
|
- DefaultSatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "0", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "0", 1, 0))),//默认满意
|
|
|
|
- NoSatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "2", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "2", 1, 0))),//不满意
|
|
|
|
- NoEvaluateCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "7", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "7", 1, 0))),//未做评价
|
|
|
|
- NoPutThroughCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "6", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "6", 1, 0))),//未接通
|
|
|
|
- })
|
|
|
|
- .MergeTable()
|
|
|
|
- .LeftJoin<SystemOrganize>((it, o) => it.OrgCode == o.Id)
|
|
|
|
- .Select((it, o) => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
|
- {
|
|
|
|
- OrgName = o.Name,
|
|
|
|
- OrgCode = it.OrgCode,
|
|
|
|
- OrgType = o.OrgType,
|
|
|
|
- TotalSumCount = it.TotalSumCount,
|
|
|
|
- VerySatisfiedCount = it.VerySatisfiedCount,//非常满意数
|
|
|
|
- SatisfiedCount = it.SatisfiedCount, //满意数
|
|
|
|
- RegardedAsSatisfiedCount = it.RegardedAsSatisfiedCount,//视为满意
|
|
|
|
- DefaultSatisfiedCount = it.DefaultSatisfiedCount,//默认满意
|
|
|
|
- NoSatisfiedCount = it.NoSatisfiedCount,//不满意
|
|
|
|
- NoEvaluateCount = it.NoEvaluateCount,//未做评价
|
|
|
|
- NoPutThroughCount = it.NoPutThroughCount,//未接通
|
|
|
|
- })
|
|
|
|
- .ToListAsync();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- var countySumModel = new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
|
|
|
+ var countySumModel = new VisitAndOrgSatisfactionStatisticsDto()
|
|
{
|
|
{
|
|
OrgName = "区县合计",
|
|
OrgName = "区县合计",
|
|
TotalSumCount = data.Where(x => x.OrgType == EOrgType.County).Sum(x => x.TotalSumCount),
|
|
TotalSumCount = data.Where(x => x.OrgType == EOrgType.County).Sum(x => x.TotalSumCount),
|
|
@@ -992,6 +908,63 @@ namespace Hotline.Api.Controllers.Bi
|
|
return new VisitAndOrgSatisfactionStatisticsResultDto { DataList = data, CountySumModel = countySumModel, CitySumModel = citySumModel, SumModel = sumModel };
|
|
return new VisitAndOrgSatisfactionStatisticsResultDto { DataList = data, CountySumModel = countySumModel, CitySumModel = citySumModel, SumModel = sumModel };
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 部门满意度统计导出
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <returns></returns>
|
|
|
|
+ [HttpPost("visit-org-satisfaction-statistics/_export")]
|
|
|
|
+ public async Task<FileStreamResult> VisitAndOrgSatisfactionStatisticsExport([FromBody] ExportExcelDto<PagedKeywordSonRequest> dto)
|
|
|
|
+ {
|
|
|
|
+ List<VisitAndOrgSatisfactionStatisticsDto> data = await _orderApplication.VisitAndOrgSatisfactionStatistics(dto.QueryDto);
|
|
|
|
+ var countySumModel = new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
|
+ {
|
|
|
|
+ OrgName = "区县合计",
|
|
|
|
+ TotalSumCount = data.Where(x => x.OrgType == EOrgType.County).Sum(x => x.TotalSumCount),
|
|
|
|
+ VerySatisfiedCount = data.Where(x => x.OrgType == EOrgType.County).Sum(x => x.VerySatisfiedCount),
|
|
|
|
+ SatisfiedCount = data.Where(x => x.OrgType == EOrgType.County).Sum(x => x.SatisfiedCount),
|
|
|
|
+ RegardedAsSatisfiedCount = data.Where(x => x.OrgType == EOrgType.County).Sum(x => x.RegardedAsSatisfiedCount),
|
|
|
|
+ DefaultSatisfiedCount = data.Where(x => x.OrgType == EOrgType.County).Sum(x => x.DefaultSatisfiedCount),
|
|
|
|
+ NoSatisfiedCount = data.Where(x => x.OrgType == EOrgType.County).Sum(x => x.NoSatisfiedCount),
|
|
|
|
+ NoEvaluateCount = data.Where(x => x.OrgType == EOrgType.County).Sum(x => x.NoEvaluateCount),
|
|
|
|
+ NoPutThroughCount = data.Where(x => x.OrgType == EOrgType.County).Sum(x => x.NoPutThroughCount),
|
|
|
|
+ };
|
|
|
|
+ data.Add(countySumModel);
|
|
|
|
+ var citySumModel = new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
|
+ {
|
|
|
|
+ OrgName = "市直合计",
|
|
|
|
+ TotalSumCount = data.Where(x => x.OrgType == EOrgType.City).Sum(x => x.TotalSumCount),
|
|
|
|
+ VerySatisfiedCount = data.Where(x => x.OrgType == EOrgType.City).Sum(x => x.VerySatisfiedCount),
|
|
|
|
+ SatisfiedCount = data.Where(x => x.OrgType == EOrgType.City).Sum(x => x.SatisfiedCount),
|
|
|
|
+ RegardedAsSatisfiedCount = data.Where(x => x.OrgType == EOrgType.City).Sum(x => x.RegardedAsSatisfiedCount),
|
|
|
|
+ DefaultSatisfiedCount = data.Where(x => x.OrgType == EOrgType.City).Sum(x => x.DefaultSatisfiedCount),
|
|
|
|
+ NoSatisfiedCount = data.Where(x => x.OrgType == EOrgType.City).Sum(x => x.NoSatisfiedCount),
|
|
|
|
+ NoEvaluateCount = data.Where(x => x.OrgType == EOrgType.City).Sum(x => x.NoEvaluateCount),
|
|
|
|
+ NoPutThroughCount = data.Where(x => x.OrgType == EOrgType.City).Sum(x => x.NoPutThroughCount),
|
|
|
|
+ };
|
|
|
|
+ data.Add(citySumModel);
|
|
|
|
+ var sumModel = new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
|
+ {
|
|
|
|
+ OrgName = "总计",
|
|
|
|
+ TotalSumCount = data.Sum(x => x.TotalSumCount),
|
|
|
|
+ VerySatisfiedCount = data.Sum(x => x.VerySatisfiedCount),
|
|
|
|
+ SatisfiedCount = data.Sum(x => x.SatisfiedCount),
|
|
|
|
+ RegardedAsSatisfiedCount = data.Sum(x => x.RegardedAsSatisfiedCount),
|
|
|
|
+ DefaultSatisfiedCount = data.Sum(x => x.DefaultSatisfiedCount),
|
|
|
|
+ NoSatisfiedCount = data.Sum(x => x.NoSatisfiedCount),
|
|
|
|
+ NoEvaluateCount = data.Sum(x => x.NoEvaluateCount),
|
|
|
|
+ NoPutThroughCount = data.Sum(x => x.NoPutThroughCount),
|
|
|
|
+ };
|
|
|
|
+ data.Add(sumModel);
|
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
|
+ var dtos = data
|
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(VisitAndOrgSatisfactionStatisticsDto), dynamicClass))
|
|
|
|
+ .Cast<object>()
|
|
|
|
+ .ToList();
|
|
|
|
+
|
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
|
+
|
|
|
|
+ return ExcelStreamResult(stream, "部门满意度统计数据");
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -1004,54 +977,10 @@ 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<VisitAndOrgSatisfactionStatisticsResultDto> VisitAndOrgStatisfactionOrgDetail(DateTime StartDate, DateTime EndDate, string OrgCode, int TypeId, string? LineNum)
|
|
|
|
|
|
+ public async Task<VisitAndOrgSatisfactionStatisticsResultDto> VisitAndOrgStatisfactionOrgDetail([FromBody] PagedKeywordSonRequest dto)
|
|
{
|
|
{
|
|
- EndDate = EndDate.AddDays(1).AddSeconds(-1);
|
|
|
|
-
|
|
|
|
- bool IsCenter = _sessionContext.OrgIsCenter;
|
|
|
|
-
|
|
|
|
- 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)
|
|
|
|
- .WhereIF(OrgCode == "001", (x, it) => it.VisitOrgCode == OrgCode)
|
|
|
|
- .WhereIF(OrgCode != "001", (x, it) => it.VisitOrgCode.StartsWith(OrgCode))
|
|
|
|
- .WhereIF(!string.IsNullOrEmpty(LineNum), (x, it) => it.OrderVisit.Order.CallRecord.Gateway.Contains(LineNum))
|
|
|
|
- .WhereIF(IsCenter == false, (x, it) => it.VisitOrgCode.StartsWith(_sessionContext.OrgId))
|
|
|
|
- .GroupBy((x, it) => new
|
|
|
|
- {
|
|
|
|
- VisitOrgCode = it.VisitOrgCode
|
|
|
|
- })
|
|
|
|
- .Select((x, it) => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
|
- {
|
|
|
|
- OrgCode = it.VisitOrgCode,
|
|
|
|
- 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()
|
|
|
|
|
|
+ var list = await _orderApplication.VisitAndOrgStatisfactionOrgDetail(dto);
|
|
|
|
+ var countySumModel = new VisitAndOrgSatisfactionStatisticsDto()
|
|
{
|
|
{
|
|
OrgName = "区县合计",
|
|
OrgName = "区县合计",
|
|
TotalSumCount = list.Where(x => x.OrgType == EOrgType.County).Sum(x => x.TotalSumCount),
|
|
TotalSumCount = list.Where(x => x.OrgType == EOrgType.County).Sum(x => x.TotalSumCount),
|
|
@@ -1093,40 +1022,114 @@ namespace Hotline.Api.Controllers.Bi
|
|
return new VisitAndOrgSatisfactionStatisticsResultDto { DataList = list, CountySumModel = countySumModel, CitySumModel = citySumModel, SumModel = sumModel };
|
|
return new VisitAndOrgSatisfactionStatisticsResultDto { DataList = list, CountySumModel = countySumModel, CitySumModel = citySumModel, SumModel = sumModel };
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
- /// <summary>
|
|
|
|
- /// 部门满意度明细
|
|
|
|
- /// </summary>
|
|
|
|
- /// <param name="StartDate"></param>
|
|
|
|
- /// <param name="EndDate"></param>
|
|
|
|
- /// <param name="OrgCode"></param>
|
|
|
|
- /// <param name="TypeId"></param>
|
|
|
|
- /// <param name="LineNum"></param>
|
|
|
|
- /// <returns></returns>
|
|
|
|
- [HttpGet("visit-org-satisfaction-detail")]
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 部门满意度统计导出
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <returns></returns>
|
|
|
|
+ [HttpPost("visit-org-statisfaction-org-detail/_export")]
|
|
|
|
+ public async Task<FileStreamResult> VisitAndOrgStatisfactionOrgDetailExport([FromBody] ExportExcelDto<PagedKeywordSonRequest> dto)
|
|
|
|
+ {
|
|
|
|
+ var list = await _orderApplication.VisitAndOrgStatisfactionOrgDetail(dto.QueryDto);
|
|
|
|
+ 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),
|
|
|
|
+ };
|
|
|
|
+ list.Add(countySumModel);
|
|
|
|
+ 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),
|
|
|
|
+ };
|
|
|
|
+ list.Add(citySumModel);
|
|
|
|
+ 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),
|
|
|
|
+ };
|
|
|
|
+ list.Add(sumModel);
|
|
|
|
+
|
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
|
+ var dtos = list
|
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(VisitAndOrgSatisfactionStatisticsDto), dynamicClass))
|
|
|
|
+ .Cast<object>()
|
|
|
|
+ .ToList();
|
|
|
|
+
|
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
|
+
|
|
|
|
+ return ExcelStreamResult(stream, "部门满意度统计数据");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 部门满意度明细
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <param name="StartDate"></param>
|
|
|
|
+ /// <param name="EndDate"></param>
|
|
|
|
+ /// <param name="OrgCode"></param>
|
|
|
|
+ /// <param name="TypeId"></param>
|
|
|
|
+ /// <param name="LineNum"></param>
|
|
|
|
+ /// <returns></returns>
|
|
|
|
+ [HttpGet("visit-org-satisfaction-detail")]
|
|
public async Task<PagedDto<OrderVisitDetailDto>> VisitAndOrgSatisfactionDetail([FromQuery] VisitAndOrgSatisfactionDetailDto dto)
|
|
public async Task<PagedDto<OrderVisitDetailDto>> VisitAndOrgSatisfactionDetail([FromQuery] VisitAndOrgSatisfactionDetailDto dto)
|
|
{
|
|
{
|
|
- dto.EndDate = dto.EndDate.AddDays(1).AddSeconds(-1);
|
|
|
|
-
|
|
|
|
- bool IsCenter = _sessionContext.OrgIsCenter;
|
|
|
|
-
|
|
|
|
- var (total, items) = await _orderVisitDetailRepository.Queryable()
|
|
|
|
- .Includes(x => x.OrderVisit, o => o.Order, d => d.CallRecord)
|
|
|
|
- .Where(x => x.OrderVisit.VisitTime >= dto.StartDate && x.OrderVisit.VisitTime <= dto.EndDate && x.VisitTarget == EVisitTarget.Org && x.OrderVisit.VisitState == EVisitState.Visited)
|
|
|
|
- .WhereIF(dto.OrgCode == "001", x => x.VisitOrgCode == dto.OrgCode)
|
|
|
|
- //.WhereIF(dto.OrgCode != "001", x => x.VisitOrgCode == dto.OrgCode).
|
|
|
|
- .WhereIF(dto.IsOnlyMy == true, x => x.VisitOrgCode == dto.OrgCode)
|
|
|
|
- .WhereIF(IsCenter == true && dto.IsOnlyMy == true, x => x.VisitOrgCode == dto.OrgCode)
|
|
|
|
- .WhereIF(IsCenter == true && dto.IsOnlyMy == null, x => x.VisitOrgCode.StartsWith(dto.OrgCode))
|
|
|
|
- .WhereIF(IsCenter == false, x => x.VisitOrgCode == dto.OrgCode)
|
|
|
|
- .WhereIF(dto.TypeId == 1, x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.DateValue)
|
|
|
|
- .WhereIF(dto.TypeId == 2, x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.DateValue)
|
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.LineNum), x => x.OrderVisit.Order.CallRecord.Gateway == dto.LineNum)
|
|
|
|
- .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
|
|
|
|
+ var (total, items) = await _orderApplication.VisitAndOrgSatisfactionDetail(dto)
|
|
|
|
+ .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
|
|
return new PagedDto<OrderVisitDetailDto>(total, _mapper.Map<IReadOnlyList<OrderVisitDetailDto>>(items));
|
|
return new PagedDto<OrderVisitDetailDto>(total, _mapper.Map<IReadOnlyList<OrderVisitDetailDto>>(items));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 部门满意度明细导出
|
|
|
|
+ /// </summary>
|
|
|
|
+ /// <returns></returns>
|
|
|
|
+ [HttpPost("visit-org-satisfaction-detail/_export")]
|
|
|
|
+ public async Task<FileStreamResult> VisitAndOrgSatisfactionDetailExport([FromBody] ExportExcelDto<VisitAndOrgSatisfactionDetailDto> dto)
|
|
|
|
+ {
|
|
|
|
+ var query = _orderApplication.VisitAndOrgSatisfactionDetail(dto.QueryDto);
|
|
|
|
+ List<OrderVisitDetail> data;
|
|
|
|
+ if (dto.IsExportAll)
|
|
|
|
+ {
|
|
|
|
+ data = await query.ToListAsync(HttpContext.RequestAborted);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
|
|
|
|
+ data = items;
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ var dataDtos = _mapper.Map<ICollection<OrderVisitDetailDto>>(data);
|
|
|
|
+
|
|
|
|
+ dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
|
|
|
|
+
|
|
|
|
+ var dtos = dataDtos
|
|
|
|
+ .Select(stu => _mapper.Map(stu, typeof(OrderVisitDetailDto), dynamicClass))
|
|
|
|
+ .Cast<object>()
|
|
|
|
+ .ToList();
|
|
|
|
+
|
|
|
|
+ var stream = ExcelHelper.CreateStream(dtos);
|
|
|
|
+
|
|
|
|
+ return ExcelStreamResult(stream, "部门满意度明细数据");
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|