|
@@ -1779,7 +1779,9 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
{
|
|
|
bool IsCenter = _sessionContextProvider.SessionContext.OrgIsCenter;
|
|
|
var orgLevel = _sessionContextProvider.SessionContext.OrgLevel;
|
|
|
- var list = _orderVisitDetailRepository.Queryable()
|
|
|
+ string orgLevelStr = ((orgLevel + 1) * 3).ToString();
|
|
|
+
|
|
|
+ var list = _orderVisitDetailRepository.Queryable()
|
|
|
.Where(x => x.OrderVisit.VisitTime >= dto.StartTime.Value && x.OrderVisit.VisitTime <= dto.EndTime.Value &&
|
|
|
x.VisitTarget == EVisitTarget.Org && x.OrderVisit.VisitState == EVisitState.Visited && !string.IsNullOrEmpty(x.VisitOrgCode))
|
|
|
.WhereIF(string.IsNullOrEmpty(dto.OrgName) == false, x => x.VisitOrgName.Contains(dto.OrgName))
|
|
@@ -1792,38 +1794,132 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
var data = new List<VisitAndOrgSatisfactionStatisticsDto>();
|
|
|
var oldData = new List<VisitAndOrgSatisfactionStatisticsDto>();
|
|
|
|
|
|
- if (IsCenter && list != null)
|
|
|
- {
|
|
|
- data = await list.GroupBy(x => new
|
|
|
- {
|
|
|
- OrgCode = x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))
|
|
|
- })
|
|
|
- .Select(x => new 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(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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
|
|
|
+ {
|
|
|
+ VisitOrgCode = x.VisitOrgCode//.Substring(SqlFunc.MappingColumn<int>("0"),SqlFunc.MappingColumn<int>(orgLevelStr))
|
|
|
+ })
|
|
|
+ .Select(x => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
+ {
|
|
|
+ OrgCode = x.VisitOrgCode,//.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>(orgLevelStr)),
|
|
|
+ TotalSumCount =
|
|
|
+ SqlFunc.AggregateCount(x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>(orgLevelStr))),
|
|
|
+ VerySatisfiedCount = SqlFunc.IIF(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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 && (o.Level == orgLevel || o.Level == (orgLevel + 1)))
|
|
|
+ .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();
|
|
|
+ }
|
|
|
+
|
|
|
+ #region 老系统数据
|
|
|
+ if (await _statisticsDepartSatisfiedRepository.Queryable().Where(x => x.Time >= dto.StartTime.Value && x.Time <= dto.EndTime.Value).AnyAsync())
|
|
|
+ {
|
|
|
+ var query = _statisticsDepartSatisfiedRepository.Queryable()
|
|
|
+ .LeftJoin<SystemOrganize>((x, so) => x.DepartmentId == so.oldBmid)
|
|
|
+ .WhereIF(IsCenter == false, (x, so) => so.Id.StartsWith(_sessionContextProvider.SessionContext.OrgId))
|
|
|
+ .Where((x, so) => x.Time >= dto.StartTime.Value && x.Time <= dto.EndTime.Value);
|
|
|
+ if (IsCenter)
|
|
|
+ {
|
|
|
+ oldData = await query.GroupBy((x, so) => new
|
|
|
{
|
|
|
- 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(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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))), //未接通
|
|
|
+ VisitOrgCode = so.Id.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))
|
|
|
+ }).Select((x, so) => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
+ {
|
|
|
+ OrgCode = so.Id.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
|
|
|
+ TotalSumCount = SqlFunc.AggregateSum(x.Total),
|
|
|
+ VerySatisfiedCount = SqlFunc.AggregateSum(x.VerySatisfaction), //非常满意数
|
|
|
+ SatisfiedCount = SqlFunc.AggregateSum(x.Satisfaction), //满意数
|
|
|
+ RegardedAsSatisfiedCount = SqlFunc.AggregateSum(x.TreatSatisfaction), //视为满意
|
|
|
+ DefaultSatisfiedCount = SqlFunc.AggregateSum(x.DefaultSatisfaction), //默认满意
|
|
|
+ NoSatisfiedCount = SqlFunc.AggregateSum(x.Dissatisfaction), //不满意
|
|
|
+ NoEvaluateCount = SqlFunc.AggregateSum(x.NotEvaluated), //未做评价
|
|
|
+ NoPutThroughCount = SqlFunc.AggregateSum(x.BlockCall), //未接通
|
|
|
})
|
|
|
.MergeTable()
|
|
|
.LeftJoin<SystemOrganize>((it, o) => it.OrgCode == o.Id)
|
|
@@ -1840,42 +1936,28 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
NoSatisfiedCount = it.NoSatisfiedCount, //不满意
|
|
|
NoEvaluateCount = it.NoEvaluateCount, //未做评价
|
|
|
NoPutThroughCount = it.NoPutThroughCount, //未接通
|
|
|
- }).ToListAsync();
|
|
|
- }
|
|
|
- else if (!IsCenter && orgLevel == 1)
|
|
|
- {
|
|
|
- data = await list.GroupBy(x => new
|
|
|
+ })
|
|
|
+ .ToListAsync(); ;
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
{
|
|
|
- OrgCode = x.VisitOrgCode
|
|
|
- })
|
|
|
- .Select(x => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
+ oldData = await query.GroupBy((x, so) => new
|
|
|
{
|
|
|
- OrgCode = x.VisitOrgCode,
|
|
|
- TotalSumCount = SqlFunc.AggregateCount(x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))),
|
|
|
- VerySatisfiedCount = SqlFunc.IIF(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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))), //未接通
|
|
|
+ VisitOrgCode = so.Id
|
|
|
+ }).Select((x, so) => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
+ {
|
|
|
+ OrgCode = so.Id,//.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>(orgLevelStr)),
|
|
|
+ TotalSumCount = SqlFunc.AggregateSum(x.Total),
|
|
|
+ VerySatisfiedCount = SqlFunc.AggregateSum(x.VerySatisfaction), //非常满意数
|
|
|
+ SatisfiedCount = SqlFunc.AggregateSum(x.Satisfaction), //满意数
|
|
|
+ RegardedAsSatisfiedCount = SqlFunc.AggregateSum(x.TreatSatisfaction), //视为满意
|
|
|
+ DefaultSatisfiedCount = SqlFunc.AggregateSum(x.DefaultSatisfaction), //默认满意
|
|
|
+ NoSatisfiedCount = SqlFunc.AggregateSum(x.Dissatisfaction), //不满意
|
|
|
+ NoEvaluateCount = SqlFunc.AggregateSum(x.NotEvaluated), //未做评价
|
|
|
+ NoPutThroughCount = SqlFunc.AggregateSum(x.BlockCall), //未接通
|
|
|
})
|
|
|
- .MergeTable()
|
|
|
- .LeftJoin<SystemOrganize>((it, o) => it.OrgCode == o.Id && (o.Level == 1 || o.Level == 2))
|
|
|
+ .MergeTable().LeftJoin<SystemOrganize>((it, o) => it.OrgCode == o.Id && (o.Level == orgLevel || o.Level == (orgLevel + 1)))
|
|
|
.Select((it, o) => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
{
|
|
|
OrgName = o.Name,
|
|
@@ -1891,206 +1973,26 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
NoPutThroughCount = it.NoPutThroughCount, //未接通
|
|
|
})
|
|
|
.ToListAsync();
|
|
|
+ }
|
|
|
+ data = (from t1 in data
|
|
|
+ join t2 in oldData on t1.OrgCode equals t2.OrgCode into t1_t2
|
|
|
+ from item in t1_t2.DefaultIfEmpty()
|
|
|
+ select new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
+ {
|
|
|
+ OrgName = t1.OrgName,
|
|
|
+ OrgCode = t1.OrgCode,
|
|
|
+ OrgType = t1.OrgType,
|
|
|
+ TotalSumCount = t1.TotalSumCount + t1_t2.Select(x => x.TotalSumCount).FirstOrDefault(),
|
|
|
+ VerySatisfiedCount = t1.VerySatisfiedCount + t1_t2.Select(x => x.VerySatisfiedCount).FirstOrDefault(),//非常满意数
|
|
|
+ SatisfiedCount = t1.SatisfiedCount + t1_t2.Select(x => x.SatisfiedCount).FirstOrDefault(), //满意数
|
|
|
+ RegardedAsSatisfiedCount = t1.RegardedAsSatisfiedCount + t1_t2.Select(x => x.RegardedAsSatisfiedCount).FirstOrDefault(), //视为满意
|
|
|
+ DefaultSatisfiedCount = t1.DefaultSatisfiedCount + t1_t2.Select(x => x.DefaultSatisfiedCount).FirstOrDefault(), //默认满意
|
|
|
+ NoSatisfiedCount = t1.NoSatisfiedCount + t1_t2.Select(x => x.NoSatisfiedCount).FirstOrDefault(), //不满意
|
|
|
+ NoEvaluateCount = t1.NoEvaluateCount + t1_t2.Select(x => x.NoEvaluateCount).FirstOrDefault(), //未做评价
|
|
|
+ NoPutThroughCount = t1.NoPutThroughCount + t1_t2.Select(x => x.NoPutThroughCount).FirstOrDefault(), //未接通
|
|
|
+ }).ToList();
|
|
|
}
|
|
|
- else if (!IsCenter && orgLevel == 2)
|
|
|
- {
|
|
|
- data = await list.GroupBy(x => new
|
|
|
- {
|
|
|
- OrgCode = x.VisitOrgCode
|
|
|
- })
|
|
|
- .Select(x => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
- {
|
|
|
- OrgCode = x.VisitOrgCode,
|
|
|
- TotalSumCount = SqlFunc.AggregateCount(x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("9"))),
|
|
|
- VerySatisfiedCount = SqlFunc.IIF(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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 && (o.Level == 2 || o.Level == 3))
|
|
|
- .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
|
|
|
- {
|
|
|
- OrgCode = x.VisitOrgCode
|
|
|
- })
|
|
|
- .Select(x => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
- {
|
|
|
- OrgCode = x.VisitOrgCode,
|
|
|
- TotalSumCount =
|
|
|
- SqlFunc.AggregateCount(x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("12"))),
|
|
|
- VerySatisfiedCount = SqlFunc.IIF(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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 && (o.Level == 3 || o.Level == 4))
|
|
|
- .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();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- //#region 老系统数据
|
|
|
- //if (await _statisticsDepartSatisfiedRepository.Queryable().Where(x => x.Time >= dto.StartTime.Value && x.Time <= dto.EndTime.Value).AnyAsync())
|
|
|
- //{
|
|
|
- // var query = _statisticsDepartSatisfiedRepository.Queryable()
|
|
|
- // .LeftJoin<SystemOrganize>((x, so) => x.DepartmentId == so.oldBmid)
|
|
|
- // .WhereIF(IsCenter == false, (x, so) => so.Id.StartsWith(_sessionContextProvider.SessionContext.OrgId))
|
|
|
- // .Where((x, so) => x.Time >= dto.StartTime.Value && x.Time <= dto.EndTime.Value);
|
|
|
- // if (IsCenter)
|
|
|
- // {
|
|
|
- // oldData = await query.GroupBy((x, so) => new
|
|
|
- // {
|
|
|
- // VisitOrgCode = so.Id.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))
|
|
|
- // }).Select((x, so) => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
- // {
|
|
|
- // OrgCode = so.Id.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
|
|
|
- // TotalSumCount = SqlFunc.AggregateSum(x.Total),
|
|
|
- // VerySatisfiedCount = SqlFunc.AggregateSum(x.VerySatisfaction), //非常满意数
|
|
|
- // SatisfiedCount = SqlFunc.AggregateSum(x.Satisfaction), //满意数
|
|
|
- // RegardedAsSatisfiedCount = SqlFunc.AggregateSum(x.TreatSatisfaction), //视为满意
|
|
|
- // DefaultSatisfiedCount = SqlFunc.AggregateSum(x.DefaultSatisfaction), //默认满意
|
|
|
- // NoSatisfiedCount = SqlFunc.AggregateSum(x.Dissatisfaction), //不满意
|
|
|
- // NoEvaluateCount = SqlFunc.AggregateSum(x.NotEvaluated), //未做评价
|
|
|
- // NoPutThroughCount = SqlFunc.AggregateSum(x.BlockCall), //未接通
|
|
|
- // })
|
|
|
- // .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
|
|
|
- // {
|
|
|
- // oldData = await query.GroupBy((x, so) => new
|
|
|
- // {
|
|
|
- // VisitOrgCode = so.Id
|
|
|
- // }).Select((x, o) => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
- // {
|
|
|
- // OrgCode = o.Id,//.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>(orgLevelStr)),
|
|
|
- // TotalSumCount = SqlFunc.AggregateSum(x.Total),
|
|
|
- // VerySatisfiedCount = SqlFunc.AggregateSum(x.VerySatisfaction), //非常满意数
|
|
|
- // SatisfiedCount = SqlFunc.AggregateSum(x.Satisfaction), //满意数
|
|
|
- // RegardedAsSatisfiedCount = SqlFunc.AggregateSum(x.TreatSatisfaction), //视为满意
|
|
|
- // DefaultSatisfiedCount = SqlFunc.AggregateSum(x.DefaultSatisfaction), //默认满意
|
|
|
- // NoSatisfiedCount = SqlFunc.AggregateSum(x.Dissatisfaction), //不满意
|
|
|
- // NoEvaluateCount = SqlFunc.AggregateSum(x.NotEvaluated), //未做评价
|
|
|
- // NoPutThroughCount = SqlFunc.AggregateSum(x.BlockCall), //未接通
|
|
|
- // })
|
|
|
- // .MergeTable().LeftJoin<SystemOrganize>((it, o) => it.OrgCode == o.Id && (o.Level == orgLevel || o.Level == (orgLevel + 1)))
|
|
|
- // .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();
|
|
|
- // }
|
|
|
- // data = (from t1 in data
|
|
|
- // join t2 in oldData on t1.OrgCode equals t2.OrgCode into t1_t2
|
|
|
- // from item in t1_t2.DefaultIfEmpty()
|
|
|
- // select new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
- // {
|
|
|
- // OrgName = t1.OrgName,
|
|
|
- // OrgCode = t1.OrgCode,
|
|
|
- // OrgType = t1.OrgType,
|
|
|
- // TotalSumCount = t1.TotalSumCount + t1_t2.Select(x => x.TotalSumCount).FirstOrDefault(),
|
|
|
- // VerySatisfiedCount = t1.VerySatisfiedCount + t1_t2.Select(x => x.VerySatisfiedCount).FirstOrDefault(),//非常满意数
|
|
|
- // SatisfiedCount = t1.SatisfiedCount + t1_t2.Select(x => x.SatisfiedCount).FirstOrDefault(), //满意数
|
|
|
- // RegardedAsSatisfiedCount = t1.RegardedAsSatisfiedCount + t1_t2.Select(x => x.RegardedAsSatisfiedCount).FirstOrDefault(), //视为满意
|
|
|
- // DefaultSatisfiedCount = t1.DefaultSatisfiedCount + t1_t2.Select(x => x.DefaultSatisfiedCount).FirstOrDefault(), //默认满意
|
|
|
- // NoSatisfiedCount = t1.NoSatisfiedCount + t1_t2.Select(x => x.NoSatisfiedCount).FirstOrDefault(), //不满意
|
|
|
- // NoEvaluateCount = t1.NoEvaluateCount + t1_t2.Select(x => x.NoEvaluateCount).FirstOrDefault(), //未做评价
|
|
|
- // NoPutThroughCount = t1.NoPutThroughCount + t1_t2.Select(x => x.NoPutThroughCount).FirstOrDefault(), //未接通
|
|
|
- // }).ToList();
|
|
|
- //}
|
|
|
- //#endregion
|
|
|
+ #endregion
|
|
|
|
|
|
return data;
|
|
|
}
|
|
@@ -2102,66 +2004,143 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
public async Task<List<VisitAndOrgSatisfactionStatisticsDto>> VisitAndOrgStatisfactionOrgDetail(PagedKeywordSonRequest dto)
|
|
|
{
|
|
|
bool IsCenter = _sessionContextProvider.SessionContext.OrgIsCenter;
|
|
|
-
|
|
|
- var list = await _systemOrganizeRepository.Queryable().Where(x => x.Id.StartsWith(dto.OrgCode))
|
|
|
- .LeftJoin<OrderVisitDetail>((x, it) => x.Id == it.VisitOrgCode)
|
|
|
- .Where((x, it) => it.OrderVisit.VisitTime >= dto.StartTime.Value && it.OrderVisit.VisitTime <= dto.EndTime.Value &&
|
|
|
- it.VisitTarget == EVisitTarget.Org && it.OrderVisit.VisitState == EVisitState.Visited)
|
|
|
- .WhereIF(dto.OrgCode == "001", (x, it) => it.VisitOrgCode == dto.OrgCode)
|
|
|
- .WhereIF(dto.OrgCode != "001", (x, it) => it.VisitOrgCode.StartsWith(dto.OrgCode))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.LineNum), (x, it) => it.OrderVisit.Order.CallRecord.Gateway.Contains(dto.LineNum))
|
|
|
- .WhereIF(dto.TypeCode != null && dto.TypeCode == 1, (x, it) => it.OrderVisit.Order.IdentityType == EIdentityType.Citizen)
|
|
|
- .WhereIF(dto.TypeCode != null && dto.TypeCode == 2, (x, it) => it.OrderVisit.Order.IdentityType == EIdentityType.Enterprise)
|
|
|
- .WhereIF(IsCenter == false, (x, it) => it.VisitOrgCode.StartsWith(_sessionContextProvider.SessionContext.OrgId))
|
|
|
- .WhereIF(dto.VisitType != null, (x, it) => it.OrderVisit.VisitType == dto.VisitType)
|
|
|
- .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(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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();
|
|
|
- return list;
|
|
|
+ var org = await _systemOrganizeRepository.Queryable().FirstAsync(x => x.Id == dto.OrgCode);
|
|
|
+
|
|
|
+ string orgLevelStr = (dto.OrgCode.Length + 3 ).ToString();
|
|
|
+ var oldData = new List<VisitAndOrgSatisfactionStatisticsDto>();
|
|
|
+
|
|
|
+ var quer = _systemOrganizeRepository.Queryable().Where(x => x.Id.StartsWith(dto.OrgCode))
|
|
|
+ .LeftJoin<OrderVisitDetail>((x, it) => x.Id == it.VisitOrgCode)
|
|
|
+ .Where((x, it) => it.OrderVisit.VisitTime >= dto.StartTime.Value &&
|
|
|
+ it.OrderVisit.VisitTime <= dto.EndTime.Value &&
|
|
|
+ it.VisitTarget == EVisitTarget.Org && it.OrderVisit.VisitState == EVisitState.Visited)
|
|
|
+ .WhereIF(dto.OrgCode == "001", (x, it) => it.VisitOrgCode == dto.OrgCode)
|
|
|
+ .WhereIF(dto.OrgCode != "001", (x, it) => it.VisitOrgCode.StartsWith(dto.OrgCode))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.LineNum),
|
|
|
+ (x, it) => it.OrderVisit.Order.CallRecord.Gateway.Contains(dto.LineNum))
|
|
|
+ .WhereIF(dto.TypeCode != null && dto.TypeCode == 1,
|
|
|
+ (x, it) => it.OrderVisit.Order.IdentityType == EIdentityType.Citizen)
|
|
|
+ .WhereIF(dto.TypeCode != null && dto.TypeCode == 2,
|
|
|
+ (x, it) => it.OrderVisit.Order.IdentityType == EIdentityType.Enterprise)
|
|
|
+ .WhereIF(IsCenter == false,
|
|
|
+ (x, it) => it.VisitOrgCode.StartsWith(_sessionContextProvider.SessionContext.OrgId))
|
|
|
+ .WhereIF(dto.VisitType != null, (x, it) => it.OrderVisit.VisitType == dto.VisitType)
|
|
|
+ .GroupBy((x, it) => new
|
|
|
+ {
|
|
|
+ VisitOrgCode = it.VisitOrgCode
|
|
|
+ })
|
|
|
+ .Select((x, it) => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
+ {
|
|
|
+ OrgCode = it.VisitOrgCode,
|
|
|
+ TotalSumCount = SqlFunc.AggregateCount(it.VisitOrgCode),
|
|
|
+ VerySatisfiedCount = SqlFunc.IIF(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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(dto.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 && (it.Level == org.Level || it.Level == (org.Level + 1)))
|
|
|
+ .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, //未接通
|
|
|
+ });
|
|
|
+ var list = await quer.ToListAsync();
|
|
|
+
|
|
|
+ #region 老系统数据
|
|
|
+ if (await _statisticsDepartSatisfiedRepository.Queryable().Where(x => x.Time >= dto.StartTime.Value && x.Time <= dto.EndTime.Value).AnyAsync())
|
|
|
+ {
|
|
|
+ var query = _statisticsDepartSatisfiedRepository.Queryable()
|
|
|
+ .LeftJoin<SystemOrganize>((x, so) => x.DepartmentId == so.oldBmid)
|
|
|
+ .WhereIF(dto.OrgCode == "001", (x, so) => so.Id == dto.OrgCode)
|
|
|
+ .WhereIF(dto.OrgCode != "001", (x, so) => so.Id.StartsWith(dto.OrgCode))
|
|
|
+ .Where((x, so) => x.Time >= dto.StartTime.Value && x.Time <= dto.EndTime.Value);
|
|
|
+
|
|
|
+ oldData = await query.GroupBy((x, so) => new
|
|
|
+ {
|
|
|
+ VisitOrgCode = so.Id
|
|
|
+ }).Select((x, so) => new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
+ {
|
|
|
+ OrgCode = so.Id,//.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>(orgLevelStr)),
|
|
|
+ TotalSumCount = SqlFunc.AggregateSum(x.Total),
|
|
|
+ VerySatisfiedCount = SqlFunc.AggregateSum(x.VerySatisfaction), //非常满意数
|
|
|
+ SatisfiedCount = SqlFunc.AggregateSum(x.Satisfaction), //满意数
|
|
|
+ RegardedAsSatisfiedCount = SqlFunc.AggregateSum(x.TreatSatisfaction), //视为满意
|
|
|
+ DefaultSatisfiedCount = SqlFunc.AggregateSum(x.DefaultSatisfaction), //默认满意
|
|
|
+ NoSatisfiedCount = SqlFunc.AggregateSum(x.Dissatisfaction), //不满意
|
|
|
+ NoEvaluateCount = SqlFunc.AggregateSum(x.NotEvaluated), //未做评价
|
|
|
+ NoPutThroughCount = SqlFunc.AggregateSum(x.BlockCall), //未接通
|
|
|
+ })
|
|
|
+ .MergeTable().LeftJoin<SystemOrganize>((it, o) => it.OrgCode == o.Id && (o.Level == org.Level || o.Level == (org.Level + 1)))
|
|
|
+ .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();
|
|
|
+ list = (from t1 in list
|
|
|
+ join t2 in oldData on t1.OrgCode equals t2.OrgCode into t1_t2
|
|
|
+ from item in t1_t2.DefaultIfEmpty()
|
|
|
+ select new VisitAndOrgSatisfactionStatisticsDto()
|
|
|
+ {
|
|
|
+ OrgName = t1.OrgName,
|
|
|
+ OrgCode = t1.OrgCode,
|
|
|
+ OrgType = t1.OrgType,
|
|
|
+ TotalSumCount = t1.TotalSumCount + t1_t2.Select(x => x.TotalSumCount).FirstOrDefault(),
|
|
|
+ VerySatisfiedCount = t1.VerySatisfiedCount + t1_t2.Select(x => x.VerySatisfiedCount).FirstOrDefault(),//非常满意数
|
|
|
+ SatisfiedCount = t1.SatisfiedCount + t1_t2.Select(x => x.SatisfiedCount).FirstOrDefault(), //满意数
|
|
|
+ RegardedAsSatisfiedCount = t1.RegardedAsSatisfiedCount + t1_t2.Select(x => x.RegardedAsSatisfiedCount).FirstOrDefault(), //视为满意
|
|
|
+ DefaultSatisfiedCount = t1.DefaultSatisfiedCount + t1_t2.Select(x => x.DefaultSatisfiedCount).FirstOrDefault(), //默认满意
|
|
|
+ NoSatisfiedCount = t1.NoSatisfiedCount + t1_t2.Select(x => x.NoSatisfiedCount).FirstOrDefault(), //不满意
|
|
|
+ NoEvaluateCount = t1.NoEvaluateCount + t1_t2.Select(x => x.NoEvaluateCount).FirstOrDefault(), //未做评价
|
|
|
+ NoPutThroughCount = t1.NoPutThroughCount + t1_t2.Select(x => x.NoPutThroughCount).FirstOrDefault(), //未接通
|
|
|
+ }).ToList();
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+ return list;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -3281,17 +3260,30 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
/// <returns></returns>
|
|
|
public ISugarQueryable<SeatSatisfactionStatisticsDto> SeatSatisfactionStatistics(PagedKeywordRequest dto)
|
|
|
{
|
|
|
- var list = _orderVisitRepository.Queryable()
|
|
|
- .Includes(d => d.Order)
|
|
|
- .Where(x => x.VisitTime >= dto.StartTime.Value && x.VisitTime <= dto.EndTime.Value && x.VisitState == EVisitState.Visited && x.Order.SeatEvaluate != null
|
|
|
- && x.Order.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && x.Order.SeatEvaluate != ESeatEvaluate.Normal)
|
|
|
- .GroupBy(x => x.Order.SeatEvaluate)
|
|
|
- .Select(x => new SeatSatisfactionStatisticsDto
|
|
|
- {
|
|
|
- SeatEvaluate = x.Order.SeatEvaluate,
|
|
|
- Count = SqlFunc.AggregateCount(x.Id)
|
|
|
- });
|
|
|
+ var list = _orderVisitDetailRepository.Queryable()
|
|
|
+ .Includes(d => d.OrderVisit)
|
|
|
+ .Where(x => x.OrderVisit.VisitTime >= dto.StartTime.Value && x.OrderVisit.VisitTime <= dto.EndTime.Value && x.OrderVisit.VisitState == EVisitState.Visited
|
|
|
+ && x.SeatEvaluate != null && x.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && x.SeatEvaluate != ESeatEvaluate.Normal && x.VisitTarget == EVisitTarget.Seat
|
|
|
+ )
|
|
|
+ .GroupBy(x => x.SeatEvaluate)
|
|
|
+ .Select(x => new SeatSatisfactionStatisticsDto
|
|
|
+ {
|
|
|
+ SeatEvaluate = x.SeatEvaluate,
|
|
|
+ Count = SqlFunc.AggregateCount(x.Id)
|
|
|
+ });
|
|
|
return list;
|
|
|
+
|
|
|
+ //var list = _orderVisitRepository.Queryable()
|
|
|
+ // .Includes(d => d.Order)
|
|
|
+ // .Where(x => x.VisitTime >= dto.StartTime.Value && x.VisitTime <= dto.EndTime.Value && x.VisitState == EVisitState.Visited && x.Order.SeatEvaluate != null
|
|
|
+ // && x.Order.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && x.Order.SeatEvaluate != ESeatEvaluate.Normal)
|
|
|
+ // .GroupBy(x => x.Order.SeatEvaluate)
|
|
|
+ // .Select(x => new SeatSatisfactionStatisticsDto
|
|
|
+ // {
|
|
|
+ // SeatEvaluate = x.Order.SeatEvaluate,
|
|
|
+ // Count = SqlFunc.AggregateCount(x.Id)
|
|
|
+ // });
|
|
|
+ //return list;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -3301,29 +3293,55 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
/// <returns></returns>
|
|
|
public ISugarQueryable<SeatSatisfactionStatisticsListDetailDto> SeatSatisfactionStatisticsListDetail(PagedKeywordRequest dto)
|
|
|
{
|
|
|
- var query = _orderVisitRepository.Queryable()
|
|
|
- .LeftJoin<Order>((ov, o) => ov.OrderId == o.Id)
|
|
|
- .Where((ov, o) => ov.VisitTime >= dto.StartTime.Value && ov.VisitTime <= dto.EndTime.Value && ov.VisitState == EVisitState.Visited && o.SeatEvaluate != null
|
|
|
- && o.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && o.SeatEvaluate != ESeatEvaluate.Normal)
|
|
|
- .GroupBy((ov, o) => new
|
|
|
- {
|
|
|
- o.AcceptorName,
|
|
|
- o.AcceptorId
|
|
|
- })
|
|
|
- .Select((ov, o) => new SeatSatisfactionStatisticsListDetailDto
|
|
|
+ var query = _orderVisitDetailRepository.Queryable()
|
|
|
+ .LeftJoin<OrderVisit>((od, ov) => od.VisitId == ov.Id)
|
|
|
+ .LeftJoin<Order>((od, ov, o) => ov.OrderId == o.Id)
|
|
|
+ //.Includes(d => d.OrderVisit)
|
|
|
+ //.Includes(d => d.OrderVisit, d => d.Order)
|
|
|
+ .Where((od, ov, o) => ov.VisitTime >= dto.StartTime.Value && ov.VisitTime <= dto.EndTime.Value && ov.VisitState == EVisitState.Visited
|
|
|
+ && od.SeatEvaluate != null && od.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && od.SeatEvaluate != ESeatEvaluate.Normal && od.VisitTarget == EVisitTarget.Seat)
|
|
|
+ .GroupBy((od, ov, o) => new
|
|
|
+ {
|
|
|
+ o.AcceptorName,
|
|
|
+ o.AcceptorId
|
|
|
+ })
|
|
|
+ .Select((od, ov, o) => new SeatSatisfactionStatisticsListDetailDto
|
|
|
{
|
|
|
UserName = o.AcceptorName,
|
|
|
UserId = o.AcceptorId,
|
|
|
- DefaultSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.DefaultSatisfied, 1, 0)),
|
|
|
- VeryNoSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.VeryNoSatisfied, 1, 0)),
|
|
|
- NoSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.NoSatisfied, 1, 0)),
|
|
|
- Normal = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.Normal, 1, 0)),
|
|
|
- Satisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.Satisfied, 1, 0)),
|
|
|
- VerySatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.VerySatisfied, 1, 0)),
|
|
|
- NoConnect = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.NoConnect, 1, 0)),
|
|
|
- NoEvaluate = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.NoEvaluate, 1, 0))
|
|
|
+ DefaultSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(od.SeatEvaluate == ESeatEvaluate.DefaultSatisfied, 1, 0)),
|
|
|
+ VeryNoSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(od.SeatEvaluate == ESeatEvaluate.VeryNoSatisfied, 1, 0)),
|
|
|
+ NoSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(od.SeatEvaluate == ESeatEvaluate.NoSatisfied, 1, 0)),
|
|
|
+ Normal = SqlFunc.AggregateSum(SqlFunc.IIF(od.SeatEvaluate == ESeatEvaluate.Normal, 1, 0)),
|
|
|
+ Satisfied = SqlFunc.AggregateSum(SqlFunc.IIF(od.SeatEvaluate == ESeatEvaluate.Satisfied, 1, 0)),
|
|
|
+ VerySatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(od.SeatEvaluate == ESeatEvaluate.VerySatisfied, 1, 0)),
|
|
|
+ NoConnect = SqlFunc.AggregateSum(SqlFunc.IIF(od.SeatEvaluate == ESeatEvaluate.NoConnect, 1, 0)),
|
|
|
+ NoEvaluate = SqlFunc.AggregateSum(SqlFunc.IIF(od.SeatEvaluate == ESeatEvaluate.NoEvaluate, 1, 0))
|
|
|
});
|
|
|
return query;
|
|
|
+ //var query = _orderVisitRepository.Queryable()
|
|
|
+ // .LeftJoin<Order>((ov, o) => ov.OrderId == o.Id)
|
|
|
+ // .Where((ov, o) => ov.VisitTime >= dto.StartTime.Value && ov.VisitTime <= dto.EndTime.Value && ov.VisitState == EVisitState.Visited && o.SeatEvaluate != null
|
|
|
+ // && o.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && o.SeatEvaluate != ESeatEvaluate.Normal)
|
|
|
+ // .GroupBy((ov, o) => new
|
|
|
+ // {
|
|
|
+ // o.AcceptorName,
|
|
|
+ // o.AcceptorId
|
|
|
+ // })
|
|
|
+ // .Select((ov, o) => new SeatSatisfactionStatisticsListDetailDto
|
|
|
+ // {
|
|
|
+ // UserName = o.AcceptorName,
|
|
|
+ // UserId = o.AcceptorId,
|
|
|
+ // DefaultSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.DefaultSatisfied, 1, 0)),
|
|
|
+ // VeryNoSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.VeryNoSatisfied, 1, 0)),
|
|
|
+ // NoSatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.NoSatisfied, 1, 0)),
|
|
|
+ // Normal = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.Normal, 1, 0)),
|
|
|
+ // Satisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.Satisfied, 1, 0)),
|
|
|
+ // VerySatisfied = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.VerySatisfied, 1, 0)),
|
|
|
+ // NoConnect = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.NoConnect, 1, 0)),
|
|
|
+ // NoEvaluate = SqlFunc.AggregateSum(SqlFunc.IIF(o.SeatEvaluate == ESeatEvaluate.NoEvaluate, 1, 0))
|
|
|
+ // });
|
|
|
+ //return query;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -3331,21 +3349,37 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- public ISugarQueryable<OrderVisit> QuerySeatSatisfactionOrderVisitList(SeatSatisfactionOrderVisitRequest dto)
|
|
|
+ public ISugarQueryable<OrderVisitDetail> QuerySeatSatisfactionOrderVisitList(SeatSatisfactionOrderVisitRequest dto)
|
|
|
{
|
|
|
- var query = _orderVisitRepository.Queryable()
|
|
|
- .Includes(d => d.Order)
|
|
|
- .Includes(d => d.Employee)
|
|
|
- .Includes(d => d.OrderVisitDetails)
|
|
|
- .Where(p => p.VisitTime >= dto.StartTime.Value && p.VisitTime <= dto.EndTime.Value && p.VisitState == EVisitState.Visited && p.Order.SeatEvaluate != null
|
|
|
- && p.Order.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && p.Order.SeatEvaluate != ESeatEvaluate.Normal)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.UserId), p => p.Order.AcceptorId == dto.UserId)
|
|
|
- .WhereIF(dto.SeatEvaluate.HasValue, p => p.Order.SeatEvaluate == dto.SeatEvaluate)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.UserName), p => p.Order.AcceptorName == dto.UserName)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Order.Title.Contains(dto.Title))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.Order.No.Contains(dto.No))
|
|
|
- .OrderByDescending(p => p.VisitTime);
|
|
|
+ var query = _orderVisitDetailRepository.Queryable()
|
|
|
+ .Includes(x => x.OrderVisit, d => d.Order)
|
|
|
+ .Includes(x => x.OrderVisit, d => d.Employee)
|
|
|
+ .Where(x => x.OrderVisit.VisitTime >= dto.StartTime.Value && x.OrderVisit.VisitTime <= dto.EndTime.Value
|
|
|
+ && x.OrderVisit.VisitState == EVisitState.Visited && x.SeatEvaluate != null
|
|
|
+ && x.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && x.SeatEvaluate != ESeatEvaluate.Normal && x.VisitTarget == EVisitTarget.Seat)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.UserId), x => x.OrderVisit.Order.AcceptorId == dto.UserId)
|
|
|
+ .WhereIF(dto.SeatEvaluate.HasValue, x => x.SeatEvaluate == dto.SeatEvaluate)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.UserName), x => x.OrderVisit.Order.AcceptorName == dto.UserName)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order.Title.Contains(dto.Title))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order.No.Contains(dto.No))
|
|
|
+ .OrderByDescending(x => x.OrderVisit.VisitTime);
|
|
|
return query;
|
|
|
+ //var query = _orderVisitRepository.Queryable()
|
|
|
+ // .Includes(d => d.Order)
|
|
|
+ // .Includes(d => d.Employee)
|
|
|
+ // .Includes(d => d.OrderVisitDetails)
|
|
|
+ // .Where(p => p.VisitTime >= dto.StartTime.Value && p.VisitTime <= dto.EndTime.Value && p.VisitState == EVisitState.Visited && p.Order.SeatEvaluate != null
|
|
|
+ // && p.Order.SeatEvaluate != ESeatEvaluate.VeryNoSatisfied && p.Order.SeatEvaluate != ESeatEvaluate.Normal)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.UserId), p => p.Order.AcceptorId == dto.UserId)
|
|
|
+ // .WhereIF(dto.SeatEvaluate.HasValue, p => p.Order.SeatEvaluate == dto.SeatEvaluate)
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.UserName), p => p.Order.AcceptorName == dto.UserName)
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Order.Title.Contains(dto.Title))
|
|
|
+ // .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.Order.No.Contains(dto.No))
|
|
|
+ // .OrderByDescending(p => p.VisitTime);
|
|
|
+ //return query;
|
|
|
}
|
|
|
|
|
|
#region private
|
|
@@ -3726,16 +3760,19 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
var hasHandled = (dto.IsHandled.HasValue && dto.IsHandled.Value) || dto.TypeCode == 1 || dto.TypeCode == 2;
|
|
|
if (hasHandled)
|
|
|
{
|
|
|
- query.Includes(d => d.WorkflowSteps.Where(step =>
|
|
|
- !string.IsNullOrEmpty(step.HandlerId)
|
|
|
- && step.HandlerId == _sessionContext.UserId
|
|
|
- && step.Status == EWorkflowStepStatus.Handled
|
|
|
- ).ToList())
|
|
|
- .Where(d => d.WorkflowSteps
|
|
|
- .Any(step =>
|
|
|
+ if (dto.TypeCode == 1)
|
|
|
+ {
|
|
|
+ query.Includes(d => d.WorkflowSteps.Where(step =>
|
|
|
!string.IsNullOrEmpty(step.HandlerId)
|
|
|
&& step.HandlerId == _sessionContext.UserId
|
|
|
- && step.Status == EWorkflowStepStatus.Handled));
|
|
|
+ && step.Status == EWorkflowStepStatus.Handled
|
|
|
+ ).ToList())
|
|
|
+ .Where(d => d.WorkflowSteps
|
|
|
+ .Any(step =>
|
|
|
+ !string.IsNullOrEmpty(step.HandlerId)
|
|
|
+ && step.HandlerId == _sessionContext.UserId
|
|
|
+ && step.Status == EWorkflowStepStatus.Handled));
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -3769,7 +3806,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
// (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContextProvider.SessionContext.Roles.Contains(step.RoleId)))).Any() ||
|
|
|
// (string.IsNullOrEmpty(d.WorkflowId) && (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContextProvider.SessionContext.RequiredUserId))
|
|
|
//);
|
|
|
-
|
|
|
+
|
|
|
return query
|
|
|
// 交办件:已派单其他节点的工单,该选项卡下工单若办结就不显示
|
|
|
.WhereIF(dto.TypeCode.HasValue == true && dto.TypeCode == 1, d => /*d.ProcessType == EProcessType.Jiaoban &&*/ d.Status < EOrderStatus.Filed)
|