|
@@ -558,7 +558,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
{
|
|
|
return null;
|
|
|
}
|
|
|
- var list = await Db.Queryable<StatisticsCenter>()
|
|
|
+ var list = await Db.Queryable<StatisticsCenter>()
|
|
|
.Where(x => x.Time >= StartTime && x.Time <= EndTime)
|
|
|
.Select(x => new StatisticsCenter
|
|
|
{
|
|
@@ -618,7 +618,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- var list = await Db.Queryable<StatisticsPurTypeSatisfied>()
|
|
|
+ var list = await Db.Queryable<StatisticsPurTypeSatisfied>()
|
|
|
.Where(x => x.Time >= StartTime && x.Time <= EndTime)
|
|
|
.Select(x => new StatisticsPurTypeSatisfied
|
|
|
{
|
|
@@ -659,7 +659,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
}
|
|
|
|
|
|
|
|
|
- var list = await Db.Queryable<StatisticsDepart>()
|
|
|
+ var list = await Db.Queryable<StatisticsDepart>()
|
|
|
.LeftJoin<SystemOrganize>((x, so) => x.DepartmentId == so.oldBmid)
|
|
|
.Where(x => x.Time >= StartTime && x.Time <= EndTime && x.Type == Type)
|
|
|
.GroupBy((x, so) => new
|
|
@@ -694,7 +694,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
var any = await Db.Queryable<StatisticsBaseInfo>()
|
|
|
.Where(x => x.AddDate >= StartTime && x.AddDate <= EndTime).AnyAsync();
|
|
|
|
|
|
- if (!any)
|
|
|
+ if (!any)
|
|
|
{
|
|
|
return null;
|
|
|
}
|
|
@@ -830,11 +830,11 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
{
|
|
|
AllCount = x.AllCount,
|
|
|
// 回访情况
|
|
|
- SatisfactionRate = SqlFunc.Round((decimal)(x.AllCount - x.SatisfactionCount) * 100 / (decimal)x.AllCount, 2), //总体满意率
|
|
|
- DepartSatisfactionRate = SqlFunc.Round((decimal)(x.DepartCount - x.DepartSatisfactionCount) * 100 / (decimal)x.DepartCount, 2), //部门满意率
|
|
|
- CenterSatisfactionRate = SqlFunc.Round((decimal)(x.CenterCount - x.CenterSatisfactionCount) * 100 / (decimal)x.CenterCount, 2), //12345中心满意率
|
|
|
- CitySatisfactionRate = SqlFunc.Round((decimal)(x.CityCount - x.CitySatisfactionCount) * 100 / (decimal)x.CityCount, 2), //市级部门满意率
|
|
|
- CountySatisfactionRate = SqlFunc.Round((decimal)(x.CountyCount - x.CountySatisfactionCount) * 100 / (decimal)x.CountyCount, 2), //县(区)满意率
|
|
|
+ SatisfactionRate = x.AllCount > 0 ? SqlFunc.Round((decimal)(x.AllCount - x.SatisfactionCount) * 100 / (decimal)x.AllCount, 2) : 0, //总体满意率
|
|
|
+ DepartSatisfactionRate = x.DepartCount > 0 ? SqlFunc.Round((decimal)(x.DepartCount - x.DepartSatisfactionCount) * 100 / (decimal)x.DepartCount, 2) : 0, //部门满意率
|
|
|
+ CenterSatisfactionRate = x.CenterCount > 0 ? SqlFunc.Round((decimal)(x.CenterCount - x.CenterSatisfactionCount) * 100 / (decimal)x.CenterCount, 2) : 0, //12345中心满意率
|
|
|
+ CitySatisfactionRate = x.CityCount > 0 ? SqlFunc.Round((decimal)(x.CityCount - x.CitySatisfactionCount) * 100 / (decimal)x.CityCount, 2) : 0, //市级部门满意率
|
|
|
+ CountySatisfactionRate = x.CountyCount > 0 ? SqlFunc.Round((decimal)(x.CountyCount - x.CountySatisfactionCount) * 100 / (decimal)x.CountyCount, 2) : 0, //县(区)满意率
|
|
|
SatisfactionCount = x.SatisfactionCount, //不满意件
|
|
|
CenterSatisfactionCount = x.CenterSatisfactionCount, //市级部门不满意件
|
|
|
CountySatisfactionCount = x.CountySatisfactionCount,
|
|
@@ -846,7 +846,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
OrderAllCount = x.OrderAllCount, // 来件总数
|
|
|
OrderAlready = x.OrderAlready, // 已办件数
|
|
|
OrderWait = x.OrderWait, // 在办件数
|
|
|
- OrderAlreadyRate = SqlFunc.Round((decimal)(x.OrderAlready) * 100 / (decimal)x.OrderAllCount, 2), //总体办结率
|
|
|
+ OrderAlreadyRate = x.OrderAllCount > 0 ? SqlFunc.Round((decimal)(x.OrderAlready) * 100 / (decimal)x.OrderAllCount, 2) : 0, //总体办结率
|
|
|
OrderCityCount = x.OrderCityCount, //市级部门受理
|
|
|
OrderCountyCount = x.OrderCountyCount, //县(区)受理
|
|
|
OrderCenterCount = x.OrderCenterCount, //12345中心受理
|
|
@@ -874,25 +874,25 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
CityWorkTime = x.CityWorkTime,
|
|
|
CountyWorkTime = x.CountyWorkTime,
|
|
|
CenterWorkTime = x.CenterWorkTime,
|
|
|
- OrderWorkTimeRate = SqlFunc.Round((decimal)(x.OrderWorkTime) / (decimal)x.OrderAlready / 60 / 8, 2), //信件办理平均时长(工作日)
|
|
|
- CityWorkTimeRate = SqlFunc.Round((decimal)(x.CityWorkTime) / (decimal)x.CityAlready / 60 / 8, 2), //市级部门平均时长(工作日)
|
|
|
- CountyWorkTimeRate = SqlFunc.Round((decimal)(x.CountyWorkTime) / (decimal)x.CountyAlready / 60 / 8, 2), //县(区)平均时长(工作日)
|
|
|
- CenterWorkTimeRate = SqlFunc.Round((decimal)(x.CenterWorkTime) / (decimal)x.CenterAlready / 60 / 8, 2), //12345中心平均时长(工作日)
|
|
|
+ OrderWorkTimeRate = x.OrderAlready > 0 ? SqlFunc.Round((decimal)(x.OrderWorkTime) / (decimal)x.OrderAlready / 60 / 8, 2) : 0, //信件办理平均时长(工作日)
|
|
|
+ CityWorkTimeRate = x.CityAlready > 0 ? SqlFunc.Round((decimal)(x.CityWorkTime) / (decimal)x.CityAlready / 60 / 8, 2) : 0, //市级部门平均时长(工作日)
|
|
|
+ CountyWorkTimeRate = x.CountyAlready > 0 ? SqlFunc.Round((decimal)(x.CountyWorkTime) / (decimal)x.CountyAlready / 60 / 8, 2) : 0, //县(区)平均时长(工作日)
|
|
|
+ CenterWorkTimeRate = x.CenterAlready > 0 ? SqlFunc.Round((decimal)(x.CenterWorkTime) / (decimal)x.CenterAlready / 60 / 8, 2) : 0, //12345中心平均时长(工作日)
|
|
|
|
|
|
// 企业服务办件情况
|
|
|
EnterpriseAllCount = x.EnterpriseAllCount,
|
|
|
EnterpriseAlready = x.EnterpriseAlready, //已办信件
|
|
|
EnterpriseWait = x.EnterpriseWait, //在办信件
|
|
|
EnterpriseVisit = x.EnterpriseVisit, //回访总量
|
|
|
- EnterpriseSatisfactionRate = SqlFunc.Round((decimal)(x.EnterpriseSatisfaction) * 100 / (decimal)x.EnterpriseVisit, 2), //总满意率
|
|
|
+ EnterpriseSatisfactionRate = x.EnterpriseVisit > 0 ? SqlFunc.Round((decimal)(x.EnterpriseSatisfaction) * 100 / (decimal)x.EnterpriseVisit, 2) : 0, //总满意率
|
|
|
EnterpriseCenter = x.EnterpriseCenter, //12345直办件
|
|
|
EnterpriseCity = x.EnterpriseCity, //市级部门办件
|
|
|
EnterpriseCounty = x.EnterpriseCounty, //县(区)办件
|
|
|
EnterpriseDisSatisfaction = x.EnterpriseVisit - x.EnterpriseSatisfaction, //不满意信件总量
|
|
|
EnterpriseCitySatisfaction = x.EnterpriseCitySatisfaction,
|
|
|
- EnterpriseCitySatisfactionRate = SqlFunc.Round((decimal)(x.EnterpriseCitySatisfaction) * 100 / (decimal)x.EnterpriseCity, 2), //市级部门满意率
|
|
|
+ EnterpriseCitySatisfactionRate = x.EnterpriseCity > 0 ? SqlFunc.Round((decimal)(x.EnterpriseCitySatisfaction) * 100 / (decimal)x.EnterpriseCity, 2) : 0, //市级部门满意率
|
|
|
EnterpriseCountySatisfaction = x.EnterpriseCountySatisfaction,
|
|
|
- EnterpriseCountySatisfactionRate = SqlFunc.Round((decimal)(x.EnterpriseCountySatisfaction) * 100 / (decimal)x.EnterpriseCounty, 2), //县(区)满意率
|
|
|
+ EnterpriseCountySatisfactionRate = x.EnterpriseCounty > 0 ? SqlFunc.Round((decimal)(x.EnterpriseCountySatisfaction) * 100 / (decimal)x.EnterpriseCounty, 2) : 0, //县(区)满意率
|
|
|
EnterpriseWorkTime = x.EnterpriseWorkTime,
|
|
|
EnterpriseCityWorkTime = x.EnterpriseCityWorkTime,
|
|
|
EnterpriseCountyWorkTime = x.EnterpriseCountyWorkTime,
|
|
@@ -980,6 +980,11 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
p.count
|
|
|
})
|
|
|
.ToPivotTableAsync(p => p.DicDataName, p => p.Hour, p => p.Sum(x => x.count));
|
|
|
+ var col1 = list.Columns.Contains("Column1");
|
|
|
+ if (col1)
|
|
|
+ {
|
|
|
+ list.Columns.Remove("Column1");
|
|
|
+ }
|
|
|
var dtList = list.Clone();
|
|
|
|
|
|
if (await Db.Queryable<StatisticsPurTypeSatisfied>().Where(x => x.Time >= dto.StartTime && x.Time <= dto.EndTime).AnyAsync())
|
|
@@ -1797,10 +1802,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
// x => dto.OrgProcessingResults.Contains(SqlFunc.JsonField(x.OrgProcessingResults, "Key")))
|
|
|
//.WhereIF(dto.OrgHandledAttitude != null && dto.OrgHandledAttitude.Any(),
|
|
|
// x => dto.OrgHandledAttitude.Contains(SqlFunc.JsonField(x.OrgHandledAttitude, "Key")))
|
|
|
- .WhereIF(dto.OrgProcessingResults != null && dto.OrgProcessingResults.Count > 0,
|
|
|
- dto.AttitudeType == EAttitudeType.ProcessingResult ?
|
|
|
- x => dto.OrgProcessingResults.Contains(SqlFunc.JsonField(x.OrgProcessingResults, "Key")) :
|
|
|
- x => dto.OrgProcessingResults.Contains(SqlFunc.JsonField(x.OrgHandledAttitude, "Key")))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults),dto.AttitudeType == EAttitudeType.ProcessingResult ?x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.OrgProcessingResults :x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.OrgProcessingResults)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.VisitUser), x => x.OrderVisit.Employee.Name.Contains(dto.VisitUser))
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order.No == dto.No)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order.Title.Contains(dto.Title))
|
|
@@ -1814,6 +1816,9 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
.WhereIF(dto.VisitTimeStart.HasValue, x => x.OrderVisit.VisitTime >= dto.VisitTimeStart) //回访时间
|
|
|
.WhereIF(dto.VisitTimeEnd.HasValue, x => x.OrderVisit.VisitTime < dto.VisitTimeEnd) //回访时间
|
|
|
.WhereIF(dto.VisitType != null, x => x.OrderVisit.VisitType == dto.VisitType) //回访方式
|
|
|
+ .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == true, x => x.OrderVisit.Order.Source == ESource.ProvinceStraight)
|
|
|
+ .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == false, x => x.OrderVisit.Order.Source != ESource.ProvinceStraight)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ContentRetrieval), x => x.VisitContent.Contains(dto.ContentRetrieval!))
|
|
|
.Select(x => new OrgVisitDetailListResp()
|
|
|
{
|
|
|
Id = x.Id,
|
|
@@ -1877,6 +1882,9 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
.WhereIF(dto.TypeId is 2, x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.DateValue)
|
|
|
.WhereIF(!string.IsNullOrEmpty(dto.LineNum), x => x.OrderVisit.Order.CallRecord.Gateway == dto.LineNum)
|
|
|
.WhereIF(dto.VisitType != null, x => x.OrderVisit.VisitType == dto.VisitType)
|
|
|
+ .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == true, x => x.OrderVisit.Order.Source == ESource.ProvinceStraight)
|
|
|
+ .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == false, x => x.OrderVisit.Order.Source != ESource.ProvinceStraight)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.ContentRetrieval), x => x.VisitContent.Contains(dto.ContentRetrieval!))
|
|
|
.Select(x => new OrgVisitDetailListResp
|
|
|
{
|
|
|
Id = x.Id,
|