|
@@ -31,6 +31,12 @@ using Hotline.Statistics;
|
|
|
using System.Dynamic;
|
|
|
using Hotline.Share.Dtos;
|
|
|
using Org.BouncyCastle.Crypto.Fpe;
|
|
|
+using Org.BouncyCastle.Utilities.Zlib;
|
|
|
+using static System.Runtime.InteropServices.JavaScript.JSType;
|
|
|
+using System;
|
|
|
+using static System.Runtime.CompilerServices.RuntimeHelpers;
|
|
|
+using Hotline.Identity.Accounts;
|
|
|
+using Hotline.Share.Dtos.Enterprise;
|
|
|
|
|
|
namespace Hotline.Repository.SqlSugar.Orders
|
|
|
{
|
|
@@ -376,7 +382,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
public async Task<DataTable> OrderHotspotTimeExport(TimeSharingPagedKeywordRequest dto)
|
|
|
- {
|
|
|
+ {
|
|
|
List<int> dts = new();
|
|
|
for (int i = 0; i < 24; i++)
|
|
|
{
|
|
@@ -429,7 +435,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
public async Task<object> OrderAcceptanceTime(TimeSharingPagedKeywordRequest dto)
|
|
|
- {
|
|
|
+ {
|
|
|
List<int> dts = new List<int>();
|
|
|
for (int i = 0; i < 24; i++)
|
|
|
{
|
|
@@ -450,7 +456,7 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
|
|
|
var listOrg = Db.Queryable<SystemDicData>()
|
|
|
.LeftJoin(listOrder, (s, p) => s.DicDataValue == p.AcceptTypeCode)
|
|
|
- .Where((s, p) => s.DicTypeCode == "AcceptType")
|
|
|
+ .Where((s, p) => s.DicTypeCode == "AcceptType")
|
|
|
.GroupBy((s, p) => s.DicDataValue).GroupBy((s, p) => s.DicDataName)
|
|
|
.GroupBy((s, p) => p.Hour)
|
|
|
.OrderBy((s, p) => s.DicDataValue)
|
|
@@ -464,34 +470,34 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
.MergeTable();
|
|
|
|
|
|
var list = await listHour.LeftJoin(listOrg, (x, p) => x.ColumnName.ToString() == p.Hour)
|
|
|
- //.Where((x,p)=> !string.IsNullOrEmpty(p.DicDataValue))
|
|
|
- .OrderBy((x,p) => x.ColumnName )
|
|
|
+ //.Where((x,p)=> !string.IsNullOrEmpty(p.DicDataValue))
|
|
|
+ .OrderBy((x, p) => x.ColumnName)
|
|
|
.Select((x, p) => new
|
|
|
{
|
|
|
Hour = x.ColumnName.ToString() + ":00 - " + x.ColumnName.ToString() + ":59",
|
|
|
p.DicDataValue,
|
|
|
p.count
|
|
|
})
|
|
|
- .MergeTable()
|
|
|
- .ToPivotTableAsync(p => p.DicDataValue, p => p.Hour, p => p.Sum(x => x.count));
|
|
|
+ .MergeTable()
|
|
|
+ .ToPivotTableAsync(p => p.DicDataValue, p => p.Hour, p => p.Sum(x => x.count));
|
|
|
|
|
|
var col = list.Columns.Contains("Column1");
|
|
|
if (col)
|
|
|
{
|
|
|
- list.Columns.Remove("Column1");
|
|
|
- }
|
|
|
+ list.Columns.Remove("Column1");
|
|
|
+ }
|
|
|
var dtList = list.Clone();
|
|
|
|
|
|
- if (await Db.Queryable<StatisticsPurTypeSatisfied>().Where(x => x.Time >= dto.StartTime && x.Time <= dto.EndTime).AnyAsync())
|
|
|
+ if (await Db.Queryable<StatisticsPurTypeSatisfied>().Where(x => x.Time >= dto.StartTime && x.Time <= dto.EndTime).AnyAsync())
|
|
|
{
|
|
|
- // 老系统数据
|
|
|
- var oldData = await Db.Queryable<StatisticsPurTypeSatisfied>()
|
|
|
+ // 老系统数据
|
|
|
+ var oldData = await Db.Queryable<StatisticsPurTypeSatisfied>()
|
|
|
.Where(x => x.Time >= dto.StartTime && x.Time <= dto.EndTime)
|
|
|
.GroupBy(x => x.Month)
|
|
|
.Select(x => new
|
|
|
{
|
|
|
- Hour = x.Month.ToString() + ":00 - " + x.Month.ToString() + ":59",
|
|
|
- _1 = SqlFunc.AggregateSum(x.Opinion),
|
|
|
+ Hour = x.Month.ToString() + ":00 - " + x.Month.ToString() + ":59",
|
|
|
+ _1 = SqlFunc.AggregateSum(x.Opinion),
|
|
|
_2 = SqlFunc.AggregateSum(x.PeopleHelp),
|
|
|
_3 = SqlFunc.AggregateSum(x.PollutionReporting),
|
|
|
_10 = SqlFunc.AggregateSum(x.Consult),
|
|
@@ -505,62 +511,432 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
_SB = SqlFunc.AggregateSum(x.Declare),
|
|
|
}).ToDataTableAsync();
|
|
|
|
|
|
- #region 处理数据
|
|
|
-
|
|
|
- foreach (DataColumn column in dtList.Columns)
|
|
|
- {
|
|
|
- if (column.ColumnName != "Hour") column.DataType = typeof(Int64);
|
|
|
- }
|
|
|
-
|
|
|
- for (int i = 0; i < list.Rows.Count; i++)
|
|
|
- {
|
|
|
- DataRow newRow = dtList.NewRow();
|
|
|
- for (int j = 0; j < list.Columns.Count; j++)
|
|
|
- {
|
|
|
- if (oldData.Columns[j].ColumnName == "Hour")
|
|
|
- {
|
|
|
- newRow[j] = list.Rows[i][j];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- var num = string.IsNullOrEmpty(list.Rows[i][j].ToString()) ? 0 : int.Parse(list.Rows[i][j].ToString());
|
|
|
- var oldRow = oldData.Select("Hour ='" + list.Rows[i]["Hour"] + "'").FirstOrDefault();
|
|
|
+ #region 处理数据
|
|
|
+
|
|
|
+ foreach (DataColumn column in dtList.Columns)
|
|
|
+ {
|
|
|
+ if (column.ColumnName != "Hour") column.DataType = typeof(Int64);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < list.Rows.Count; i++)
|
|
|
+ {
|
|
|
+ DataRow newRow = dtList.NewRow();
|
|
|
+ for (int j = 0; j < list.Columns.Count; j++)
|
|
|
+ {
|
|
|
+ if (oldData.Columns[j].ColumnName == "Hour")
|
|
|
+ {
|
|
|
+ newRow[j] = list.Rows[i][j];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var num = string.IsNullOrEmpty(list.Rows[i][j].ToString()) ? 0 : int.Parse(list.Rows[i][j].ToString());
|
|
|
+ var oldRow = oldData.Select("Hour ='" + list.Rows[i]["Hour"] + "'").FirstOrDefault();
|
|
|
var oldColName = "_" + dtList.Columns[j].ColumnName;
|
|
|
var allNum = oldRow == null ? num : oldRow.Field<Int64>(oldColName) + num;
|
|
|
- newRow[j] = allNum;
|
|
|
- }
|
|
|
- }
|
|
|
- dtList.Rows.Add(newRow);
|
|
|
- }
|
|
|
-
|
|
|
- #endregion
|
|
|
- }
|
|
|
- return ToDynamicList(dtList);
|
|
|
+ newRow[j] = allNum;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dtList.Rows.Add(newRow);
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
+ return ToDynamicList(dtList);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 中心报表统计
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="StartTime"></param>
|
|
|
+ /// <param name="EndTime"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<DataTable> CenterReportFormsStatistics(DateTime StartTime, DateTime EndTime)
|
|
|
+ {
|
|
|
+ var listAny = await Db.Queryable<StatisticsCenter>()
|
|
|
+ .Where(x => x.Time >= StartTime && x.Time <= EndTime).AnyAsync();
|
|
|
+ if (!listAny)
|
|
|
+ {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ var list = await Db.Queryable<StatisticsCenter>()
|
|
|
+ .Where(x => x.Time >= StartTime && x.Time <= EndTime)
|
|
|
+ .Select(x => new StatisticsCenter
|
|
|
+ {
|
|
|
+ CallNum = SqlFunc.AggregateSum(x.CallNum),
|
|
|
+ FamilyCallNum = SqlFunc.AggregateSum(x.FamilyCallNum),
|
|
|
+ FamilyCallConnNum = SqlFunc.AggregateSum(x.FamilyCallConnNum),
|
|
|
+ CallInConn = SqlFunc.AggregateSum(x.CallInConn),
|
|
|
+ CallInNotConn = SqlFunc.AggregateSum(x.CallInNotConn),
|
|
|
+ CallInIVR = SqlFunc.AggregateSum(x.CallInIVR),
|
|
|
+ CallInQueue = SqlFunc.AggregateSum(x.CallInQueue),
|
|
|
+ VisitAlreadyNum = SqlFunc.AggregateSum(x.VisitAlreadyNum),
|
|
|
+ VisitWaitNum = SqlFunc.AggregateSum(x.VisitWaitNum),
|
|
|
+ SatisfactionSeat = SqlFunc.AggregateAvg(x.SatisfactionSeat),
|
|
|
+ SatisfactionDepartment = SqlFunc.AggregateAvg(x.SatisfactionDepartment),
|
|
|
+ OrderAllNum = SqlFunc.AggregateSum(x.OrderAllNum),
|
|
|
+ OrderNormalNum = SqlFunc.AggregateSum(x.OrderNormalNum),
|
|
|
+ OrderInvalidNum = SqlFunc.AggregateSum(x.OrderInvalidNum),
|
|
|
+ OrderEndNum = SqlFunc.AggregateSum(x.OrderEndNum),
|
|
|
+ OrderWaitNum = SqlFunc.AggregateSum(x.OrderWaitNum),
|
|
|
+ FromAllNum = SqlFunc.AggregateSum(x.FromAllNum),
|
|
|
+ FromPhone = SqlFunc.AggregateSum(x.FromPhone),
|
|
|
+ FromInternet = SqlFunc.AggregateSum(x.FromInternet),
|
|
|
+ FromOther = SqlFunc.AggregateSum(x.FromOther),
|
|
|
+ FromSelfBuild = SqlFunc.AggregateSum(x.FromSelfBuild),
|
|
|
+ FromWeChat = SqlFunc.AggregateSum(x.FromWeChat),
|
|
|
+ FromWeibo = SqlFunc.AggregateSum(x.FromWeibo),
|
|
|
+ FromApp = SqlFunc.AggregateSum(x.FromApp),
|
|
|
+ FromSmartYibin = SqlFunc.AggregateSum(x.FromSmartYibin),
|
|
|
+ FromPlatformZZ = SqlFunc.AggregateSum(x.FromPlatformZZ),
|
|
|
+ FromPlatform12328 = SqlFunc.AggregateSum(x.FromPlatform12328),
|
|
|
+ FromMayorNetizen = SqlFunc.AggregateSum(x.FromMayorNetizen),
|
|
|
+ FromPlatformRMT = SqlFunc.AggregateSum(x.FromPlatformRMT),
|
|
|
+ FromPlatformProvince = SqlFunc.AggregateSum(x.FromPlatformProvince),
|
|
|
+ FromPlatformZMHD = SqlFunc.AggregateSum(x.FromPlatformZMHD),
|
|
|
+ FromPlatformYBS = SqlFunc.AggregateSum(x.FromPlatformYBS),
|
|
|
+ FromPlatformSZHZ = SqlFunc.AggregateSum(x.FromPlatformSZHZ),
|
|
|
+ FromPlatform110 = SqlFunc.AggregateSum(x.FromPlatform110),
|
|
|
+ FromPlatformBBCS = SqlFunc.AggregateSum(x.FromPlatformBBCS),
|
|
|
+ FromPlatformIYB = SqlFunc.AggregateSum(x.FromPlatformIYB)
|
|
|
+ })
|
|
|
+ .ToDataTableAsync();
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 中心报表统计(受理类型)
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="StartTime"></param>
|
|
|
+ /// <param name="EndTime"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<DataTable> CenterReportPurTypeStatistics(DateTime StartTime, DateTime EndTime)
|
|
|
+ {
|
|
|
+ var any = await Db.Queryable<StatisticsPurTypeSatisfied>()
|
|
|
+ .Where(x => x.Time >= StartTime && x.Time <= EndTime).AnyAsync();
|
|
|
+ if (!any)
|
|
|
+ {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ var list = await Db.Queryable<StatisticsPurTypeSatisfied>()
|
|
|
+ .Where(x => x.Time >= StartTime && x.Time <= EndTime)
|
|
|
+ .Select(x => new StatisticsPurTypeSatisfied
|
|
|
+ {
|
|
|
+ Total = SqlFunc.AggregateSum(x.Total),
|
|
|
+ Consult = SqlFunc.AggregateSum(x.Consult),
|
|
|
+ Suggest = SqlFunc.AggregateSum(x.Suggest),
|
|
|
+ SeekHelp = SqlFunc.AggregateSum(x.SeekHelp),
|
|
|
+ Praise = SqlFunc.AggregateSum(x.Praise),
|
|
|
+ Report = SqlFunc.AggregateSum(x.Report),
|
|
|
+ Complaint = SqlFunc.AggregateSum(x.Complaint),
|
|
|
+ Rests = SqlFunc.AggregateSum(x.Rests),
|
|
|
+ PollutionReporting = SqlFunc.AggregateSum(x.PollutionReporting),
|
|
|
+ PeopleHelp = SqlFunc.AggregateSum(x.PeopleHelp),
|
|
|
+ Opinion = SqlFunc.AggregateSum(x.Opinion),
|
|
|
+ Epidemic = SqlFunc.AggregateSum(x.Epidemic),
|
|
|
+ Declare = SqlFunc.AggregateSum(x.Declare),
|
|
|
+ Invalid = SqlFunc.AggregateSum(x.Invalid)
|
|
|
+ })
|
|
|
+ .ToDataTableAsync();
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 中心报表统计(部门办件)
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="StartTime"></param>
|
|
|
+ /// <param name="EndTime"></param>
|
|
|
+ /// <param name="Type">市级部门 区县部门</param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<DataTable> CenterReportDepartStatistics(DateTime StartTime, DateTime EndTime, string Type)
|
|
|
+ {
|
|
|
+ var any = await Db.Queryable<StatisticsDepart>()
|
|
|
+ .LeftJoin<SystemOrganize>((x, so) => x.DepartmentId == so.oldBmid)
|
|
|
+ .Where(x => x.Time >= StartTime && x.Time <= EndTime && x.Type == Type).AnyAsync();
|
|
|
+ if (!any)
|
|
|
+ {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ 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
|
|
|
+ {
|
|
|
+ OrgCode = so.Id.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
|
|
|
+ })
|
|
|
+ .Select((x, so) => new
|
|
|
+ {
|
|
|
+ OrgCode = so.Id.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
|
|
|
+ OrderAllNum = SqlFunc.AggregateSum(x.OrderAllNum)
|
|
|
+ })
|
|
|
+ .MergeTable()
|
|
|
+ .LeftJoin<SystemOrganize>((temp, so) => temp.OrgCode == so.Id)
|
|
|
+ .Select((temp, so) => new
|
|
|
+ {
|
|
|
+ OrgCode = temp.OrgCode,
|
|
|
+ Name = so.Name,
|
|
|
+ OrderAllNum = temp.OrderAllNum
|
|
|
+ })
|
|
|
+ .ToDataTableAsync();
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 中心报表统计(新增加的)
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="StartTime"></param>
|
|
|
+ /// <param name="EndTime"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<DataTable> CenterReportNewStatistics(DateTime StartTime, DateTime EndTime)
|
|
|
+ {
|
|
|
+ var any = await Db.Queryable<StatisticsBaseInfo>()
|
|
|
+ .Where(x => x.AddDate >= StartTime && x.AddDate <= EndTime).AnyAsync();
|
|
|
+
|
|
|
+ if (!any)
|
|
|
+ {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ var list = await Db.Queryable<StatisticsBaseInfo>()
|
|
|
+ .Where(x => x.AddDate >= StartTime && x.AddDate <= EndTime)
|
|
|
+ .Select(x => new
|
|
|
+ {
|
|
|
+ // 回访情况
|
|
|
+ AllCount = SqlFunc.IIF(string.IsNullOrEmpty(x.AppTypeName) == false, 1, 0), // 总体条数
|
|
|
+ SatisfactionCount = SqlFunc.IIF(string.IsNullOrEmpty(x.AppTypeName) == false && x.AppTypeName.Contains("不满意") == true, 1, 0), // 总体不满意条数
|
|
|
+ DepartCount = SqlFunc.IIF(string.IsNullOrEmpty(x.AppTypeName) == false && x.DepartID != 23, 1, 0), // 部门总体条数
|
|
|
+ DepartSatisfactionCount = SqlFunc.IIF(string.IsNullOrEmpty(x.AppTypeName) == false && x.DepartID != 23 && x.AppTypeName.Contains("不满意") == true, 1, 0), // 部门总体不满意条数
|
|
|
+ CenterCount = SqlFunc.IIF(string.IsNullOrEmpty(x.AppTypeName) == false && x.DepartID == 23, 1, 0), // 中心总体条数
|
|
|
+ CenterSatisfactionCount = SqlFunc.IIF(string.IsNullOrEmpty(x.AppTypeName) == false && x.DepartID == 23 && x.AppTypeName.Contains("不满意") == true, 1, 0), // 中心总体不满意条数
|
|
|
+ CityCount = SqlFunc.IIF(string.IsNullOrEmpty(x.AppTypeName) == false && x.TypeName == "市直部门", 1, 0), // 市级总体条数
|
|
|
+ CitySatisfactionCount = SqlFunc.IIF(string.IsNullOrEmpty(x.AppTypeName) == false && x.TypeName == "市直部门" && x.AppTypeName.Contains("不满意") == true, 1, 0), // 市级总体不满意条数
|
|
|
+ CountyCount = SqlFunc.IIF(string.IsNullOrEmpty(x.AppTypeName) == false && x.TypeName == "区县部门", 1, 0), // 区县总体条数
|
|
|
+ CountySatisfactionCount = SqlFunc.IIF(string.IsNullOrEmpty(x.AppTypeName) == false && x.TypeName == "区县部门" && x.AppTypeName.Contains("不满意") == true, 1, 0), // 区县总体不满意条数
|
|
|
+
|
|
|
+ // 信件情况
|
|
|
+ OrderAllCount = 1, // 来件总计
|
|
|
+ OrderAlready = SqlFunc.IIF(x.StateFlag == "办理完成", 1, 0), // 已办件数
|
|
|
+ OrderWait = SqlFunc.IIF(x.StateFlag != "办理完成", 1, 0), // 在办件数
|
|
|
+ OrderCenterCount = SqlFunc.IIF(x.DepartID == 23, 1, 0), // 中心受理
|
|
|
+ OrderCityCount = SqlFunc.IIF(x.TypeName == "市直部门", 1, 0), // 市直受理
|
|
|
+ OrderCountyCount = SqlFunc.IIF(x.TypeName == "区县部门", 1, 0), // 区县受理
|
|
|
+
|
|
|
+ // 按时办结情况
|
|
|
+ CompleteOnTime = SqlFunc.IIF(x.CompleteOnTime == 1, 1, 0), // 按时办结
|
|
|
+ DepartCompleteOnTime = SqlFunc.IIF(x.DepartID != 23 && x.CompleteOnTime == 1, 1, 0), // 部门按时办结
|
|
|
+ CityCompleteOnTime = SqlFunc.IIF(x.TypeName == "市直部门" && x.CompleteOnTime == 1, 1, 0), // 市级部门按时办结
|
|
|
+ CountyCompleteOnTime = SqlFunc.IIF(x.TypeName == "区县部门" && x.CompleteOnTime == 1, 1, 0), // 县(区)按时办结
|
|
|
+ CenterCompleteOnTime = SqlFunc.IIF(x.DepartID == 23 && x.CompleteOnTime == 1, 1, 0), // 12345中心按时办结
|
|
|
+ DepartAlready = SqlFunc.IIF(x.StateFlag == "办理完成" && x.DepartID != 23, 1, 0), // 部门已办
|
|
|
+ CenterAlready = SqlFunc.IIF(x.StateFlag == "办理完成" && x.DepartID == 23, 1, 0), // 中心已办
|
|
|
+ CityAlready = SqlFunc.IIF(x.StateFlag == "办理完成" && x.TypeName == "市直部门", 1, 0), // 市直已办
|
|
|
+ CountyAlready = SqlFunc.IIF(x.StateFlag == "办理完成" && x.TypeName == "区县部门", 1, 0), // 区县已办
|
|
|
+
|
|
|
+ // 办理时效情况
|
|
|
+ OrderWorkTime = SqlFunc.IIF(x.StateFlag == "办理完成", x.CallHandToEndWork, 0), // 总办理时长
|
|
|
+ CityWorkTime = SqlFunc.IIF(x.TypeName == "市直部门", x.CallHandToEndWork, 0), // 市直办理时长
|
|
|
+ CountyWorkTime = SqlFunc.IIF(x.TypeName == "区县部门", x.CallHandToEndWork, 0), // 区县办理时长
|
|
|
+ CenterWorkTime = SqlFunc.IIF(x.DepartID == 23, x.CallHandToEndWork, 0), // 中心办理时长
|
|
|
+
|
|
|
+ // 企业服务办件情况
|
|
|
+ EnterpriseAllCount = SqlFunc.IIF(x.PersonnelType == "企业", 1, 0),
|
|
|
+ EnterpriseAlready = SqlFunc.IIF(x.PersonnelType == "企业" && x.StateFlag == "办理完成", 1, 0), // 已办信件
|
|
|
+ EnterpriseWait = SqlFunc.IIF(x.PersonnelType == "企业" && x.StateFlag != "办理完成", 1, 0), // 在办信件
|
|
|
+ EnterpriseVisit = SqlFunc.IIF(x.PersonnelType == "企业" && string.IsNullOrWhiteSpace(x.AppTypeName) == false, 1, 0), // 回访总量
|
|
|
+ EnterpriseSatisfaction = SqlFunc.IIF(x.PersonnelType == "企业" && x.AppTypeName.Contains("不满意") == false, 1, 0), // 满意量
|
|
|
+ EnterpriseCenter = SqlFunc.IIF(x.PersonnelType == "企业" && x.DepartID == 23, 1, 0), // 12345直办件
|
|
|
+ EnterpriseCity = SqlFunc.IIF(x.PersonnelType == "企业" && x.TypeName == "市直部门", 1, 0), // 市级部门办件
|
|
|
+ EnterpriseCounty = SqlFunc.IIF(x.PersonnelType == "企业" && x.TypeName == "区县部门", 1, 0), // 县(区)办件
|
|
|
+ EnterpriseCitySatisfaction = SqlFunc.IIF(x.PersonnelType == "企业" && x.TypeName == "市直部门" && x.AppTypeName.Contains("不满意") == false, 1, 0), // 市级部门满意量
|
|
|
+ EnterpriseCountySatisfaction = SqlFunc.IIF(x.PersonnelType == "企业" && x.TypeName == "区县部门" && x.AppTypeName.Contains("不满意") == false, 1, 0), // 县(区)满意量
|
|
|
+ EnterpriseWorkTime = SqlFunc.IIF(x.PersonnelType == "企业" && x.StateFlag == "办理完成", x.CallHandToEndWork, 0), // 企业信件办理平均时长(工作日)
|
|
|
+ EnterpriseCityWorkTime = SqlFunc.IIF(x.PersonnelType == "企业" && x.TypeName == "市直部门", x.CallHandToEndWork, 0), // 市级部门企业信件平均时长(工作日)
|
|
|
+ EnterpriseCountyWorkTime = SqlFunc.IIF(x.PersonnelType == "企业" && x.TypeName == "区县部门", x.CallHandToEndWork, 0), // 县(区)企业信件平均时长(工作日)
|
|
|
+ EnterpriseCenterWorkTime = SqlFunc.IIF(x.PersonnelType == "企业" && x.DepartID == 23, x.CallHandToEndWork, 0), // 12345直办企业信件平均时长(工作日)
|
|
|
+ EnterpriseConsult = SqlFunc.IIF(x.PersonnelType == "企业" && x.PurName == "咨询", 1, 0), // 企业咨询
|
|
|
+ EnterpriseSeekHelp = SqlFunc.IIF(x.PersonnelType == "企业" && x.PurName == "求助", 1, 0), // 企业求助
|
|
|
+ EnterpriseComplaint = SqlFunc.IIF(x.PersonnelType == "企业" && x.PurName == "投诉", 1, 0), // 企业投诉
|
|
|
+ EnterpriseReport = SqlFunc.IIF(x.PersonnelType == "企业" && x.PurName == "举报", 1, 0), // 企业举报
|
|
|
+ EnterpriseSuggest = SqlFunc.IIF(x.PersonnelType == "企业" && x.PurName == "建议", 1, 0), // 企业建议
|
|
|
+ EnterprisePraise = SqlFunc.IIF(x.PersonnelType == "企业" && x.PurName == "表扬", 1, 0), // 企业表扬
|
|
|
+ EnterpriseOpinion = SqlFunc.IIF(x.PersonnelType == "企业" && x.PurName == "意见", 1, 0) // 企业意见
|
|
|
+ })
|
|
|
+ .MergeTable()
|
|
|
+ .Select(x => new
|
|
|
+ {
|
|
|
+ // 回访情况
|
|
|
+ AllCount = SqlFunc.AggregateSum(x.AllCount),
|
|
|
+ SatisfactionCount = SqlFunc.AggregateSum(x.SatisfactionCount),
|
|
|
+ DepartCount = SqlFunc.AggregateSum(x.DepartCount),
|
|
|
+ DepartSatisfactionCount = SqlFunc.AggregateSum(x.DepartSatisfactionCount),
|
|
|
+ CenterCount = SqlFunc.AggregateSum(x.CenterCount),
|
|
|
+ CenterSatisfactionCount = SqlFunc.AggregateSum(x.CenterSatisfactionCount),
|
|
|
+ CityCount = SqlFunc.AggregateSum(x.CityCount),
|
|
|
+ CitySatisfactionCount = SqlFunc.AggregateSum(x.CitySatisfactionCount),
|
|
|
+ CountyCount = SqlFunc.AggregateSum(x.CountyCount),
|
|
|
+ CountySatisfactionCount = SqlFunc.AggregateSum(x.CountySatisfactionCount),
|
|
|
+
|
|
|
+ // 信件情况
|
|
|
+ OrderAllCount = SqlFunc.AggregateSum(x.OrderAllCount),
|
|
|
+ OrderAlready = SqlFunc.AggregateSum(x.OrderAlready),
|
|
|
+ OrderWait = SqlFunc.AggregateSum(x.OrderWait),
|
|
|
+ OrderCenterCount = SqlFunc.AggregateSum(x.OrderCenterCount),
|
|
|
+ OrderCityCount = SqlFunc.AggregateSum(x.OrderCityCount),
|
|
|
+ OrderCountyCount = SqlFunc.AggregateSum(x.OrderCountyCount),
|
|
|
+
|
|
|
+ // 按时办结情况
|
|
|
+ CompleteOnTime = SqlFunc.AggregateSum(x.CompleteOnTime),
|
|
|
+ DepartCompleteOnTime = SqlFunc.AggregateSum(x.DepartCompleteOnTime),
|
|
|
+ CityCompleteOnTime = SqlFunc.AggregateSum(x.CityCompleteOnTime),
|
|
|
+ CountyCompleteOnTime = SqlFunc.AggregateSum(x.CountyCompleteOnTime),
|
|
|
+ CenterCompleteOnTime = SqlFunc.AggregateSum(x.CenterCompleteOnTime),
|
|
|
+ DepartAlready = SqlFunc.AggregateSum(x.DepartAlready),
|
|
|
+ CenterAlready = SqlFunc.AggregateSum(x.CenterAlready),
|
|
|
+ CityAlready = SqlFunc.AggregateSum(x.CityAlready),
|
|
|
+ CountyAlready = SqlFunc.AggregateSum(x.CountyAlready),
|
|
|
+
|
|
|
+ // 办理时效情况
|
|
|
+ OrderWorkTime = SqlFunc.AggregateSum(x.OrderWorkTime),
|
|
|
+ CityWorkTime = SqlFunc.AggregateSum(x.CityWorkTime),
|
|
|
+ CountyWorkTime = SqlFunc.AggregateSum(x.CountyWorkTime),
|
|
|
+ CenterWorkTime = SqlFunc.AggregateSum(x.CenterWorkTime),
|
|
|
+
|
|
|
+ // 企业服务办件情况
|
|
|
+ EnterpriseAllCount = SqlFunc.AggregateSum(x.EnterpriseAllCount),
|
|
|
+ EnterpriseAlready = SqlFunc.AggregateSum(x.EnterpriseAlready),
|
|
|
+ EnterpriseWait = SqlFunc.AggregateSum(x.EnterpriseWait),
|
|
|
+ EnterpriseVisit = SqlFunc.AggregateSum(x.EnterpriseVisit),
|
|
|
+ EnterpriseSatisfaction = SqlFunc.AggregateSum(x.EnterpriseSatisfaction),
|
|
|
+ EnterpriseCenter = SqlFunc.AggregateSum(x.EnterpriseCenter),
|
|
|
+ EnterpriseCity = SqlFunc.AggregateSum(x.EnterpriseCity),
|
|
|
+ EnterpriseCounty = SqlFunc.AggregateSum(x.EnterpriseCounty),
|
|
|
+ EnterpriseCitySatisfaction = SqlFunc.AggregateSum(x.EnterpriseCitySatisfaction),
|
|
|
+ EnterpriseCountySatisfaction = SqlFunc.AggregateSum(x.EnterpriseCountySatisfaction),
|
|
|
+ EnterpriseWorkTime = SqlFunc.AggregateSum(x.EnterpriseWorkTime),
|
|
|
+ EnterpriseCityWorkTime = SqlFunc.AggregateSum(x.EnterpriseCityWorkTime),
|
|
|
+ EnterpriseCountyWorkTime = SqlFunc.AggregateSum(x.EnterpriseCountyWorkTime),
|
|
|
+ EnterpriseCenterWorkTime = SqlFunc.AggregateSum(x.EnterpriseCenterWorkTime),
|
|
|
+ EnterpriseConsult = SqlFunc.AggregateSum(x.EnterpriseConsult),
|
|
|
+ EnterpriseSeekHelp = SqlFunc.AggregateSum(x.EnterpriseSeekHelp),
|
|
|
+ EnterpriseComplaint = SqlFunc.AggregateSum(x.EnterpriseComplaint),
|
|
|
+ EnterpriseReport = SqlFunc.AggregateSum(x.EnterpriseReport),
|
|
|
+ EnterpriseSuggest = SqlFunc.AggregateSum(x.EnterpriseSuggest),
|
|
|
+ EnterprisePraise = SqlFunc.AggregateSum(x.EnterprisePraise),
|
|
|
+ EnterpriseOpinion = SqlFunc.AggregateSum(x.EnterpriseOpinion)
|
|
|
+ })
|
|
|
+ .MergeTable()
|
|
|
+ .Select(x => new
|
|
|
+ {
|
|
|
+ AllCount = x.AllCount,
|
|
|
+ // 回访情况
|
|
|
+ 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,
|
|
|
+ CitySatisfactionCount = x.CitySatisfactionCount, //县(区)不满意件
|
|
|
+ CityCount = x.CityCount,
|
|
|
+ CountyCount = x.CountyCount,
|
|
|
+
|
|
|
+ // 信件情况
|
|
|
+ OrderAllCount = x.OrderAllCount, // 来件总数
|
|
|
+ OrderAlready = x.OrderAlready, // 已办件数
|
|
|
+ OrderWait = x.OrderWait, // 在办件数
|
|
|
+ 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中心受理
|
|
|
+ //OrderCityRate = SqlFunc.Round((decimal)(x.OrderCityCount) * 100 / (decimal)x.OrderAllCount, 2), //市级部门受理占比
|
|
|
+ //OrderCountyRate = SqlFunc.Round((decimal)(x.OrderCountyCount) * 100 / (decimal)x.OrderAllCount, 2), //县(区)受理占比
|
|
|
+ //OrderCenterRate = SqlFunc.Round((decimal)(x.OrderCenterCount) * 100 / (decimal)x.OrderAllCount, 2), //12345中心受理占比
|
|
|
+
|
|
|
+ // 按时办结情况
|
|
|
+ CompleteOnTime = x.CompleteOnTime,
|
|
|
+ DepartCompleteOnTime = x.DepartCompleteOnTime,
|
|
|
+ CityCompleteOnTime = x.CityCompleteOnTime,
|
|
|
+ CountyCompleteOnTime = x.CountyCompleteOnTime,
|
|
|
+ CenterCompleteOnTime = x.CenterCompleteOnTime,
|
|
|
+ CityAlready = x.CityAlready,
|
|
|
+ CountyAlready = x.CountyAlready,
|
|
|
+ CenterAlready = x.CenterAlready,
|
|
|
+ //CompleteOnTimeRate = SqlFunc.Round((decimal)(x.CompleteOnTime) * 100 / (decimal)x.OrderAlready, 2), //总体按时办结率
|
|
|
+ //DepartCompleteOnTimeRate = SqlFunc.Round((decimal)(x.DepartCompleteOnTime) * 100 / (decimal)x.DepartAlready, 2), //部门按时办结率
|
|
|
+ //CityCompleteOnTimeRate = SqlFunc.Round((decimal)(x.CityCompleteOnTime) * 100 / (decimal)x.CityAlready, 2), //市级部门按时办结率
|
|
|
+ //CountyCompleteOnTimeRate = SqlFunc.Round((decimal)(x.CountyCompleteOnTime) * 100 / (decimal)x.CountyAlready, 2), //县(区)按时办结率
|
|
|
+ //CenterCompleteOnTimeRate = SqlFunc.Round((decimal)(x.CenterCompleteOnTime) * 100 / (decimal)x.CenterAlready, 2), //12345中心按时办结率
|
|
|
+
|
|
|
+ // 办理时效情况
|
|
|
+ OrderWorkTime = x.OrderWorkTime,
|
|
|
+ CityWorkTime = x.CityWorkTime,
|
|
|
+ CountyWorkTime = x.CountyWorkTime,
|
|
|
+ CenterWorkTime = x.CenterWorkTime,
|
|
|
+ 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 = 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 = x.EnterpriseCity > 0 ? SqlFunc.Round((decimal)(x.EnterpriseCitySatisfaction) * 100 / (decimal)x.EnterpriseCity, 2) : 0, //市级部门满意率
|
|
|
+ EnterpriseCountySatisfaction = x.EnterpriseCountySatisfaction,
|
|
|
+ EnterpriseCountySatisfactionRate = x.EnterpriseCounty > 0 ? SqlFunc.Round((decimal)(x.EnterpriseCountySatisfaction) * 100 / (decimal)x.EnterpriseCounty, 2) : 0, //县(区)满意率
|
|
|
+ EnterpriseWorkTime = x.EnterpriseWorkTime,
|
|
|
+ EnterpriseCityWorkTime = x.EnterpriseCityWorkTime,
|
|
|
+ EnterpriseCountyWorkTime = x.EnterpriseCountyWorkTime,
|
|
|
+ EnterpriseCenterWorkTime = x.EnterpriseCenterWorkTime,
|
|
|
+ //EnterpriseWorkTime = SqlFunc.Round((decimal)(x.EnterpriseWorkTime) / (decimal)x.EnterpriseAlready / 60 / 8, 2), //企业信件办理平均时长(工作日)
|
|
|
+ //EnterpriseCityWorkTime = SqlFunc.Round((decimal)(x.EnterpriseCityWorkTime) / (decimal)x.EnterpriseCenter / 60 / 8, 2), //市级部门企业信件平均时长(工作日)
|
|
|
+ //EnterpriseCountyWorkTime = SqlFunc.Round((decimal)(x.EnterpriseCountyWorkTime) / (decimal)x.EnterpriseCounty / 60 / 8, 2), //县(区)企业信件平均时长(工作日)
|
|
|
+ //EnterpriseCenterWorkTime = SqlFunc.Round((decimal)(x.EnterpriseCenterWorkTime) / (decimal)x.EnterpriseCenter / 60 / 8, 2), //12345直办企业信件平均时长(工作日)
|
|
|
+ EnterpriseConsult = x.EnterpriseConsult, //咨询
|
|
|
+ EnterpriseSeekHelp = x.EnterpriseSeekHelp, //求助
|
|
|
+ EnterpriseComplaint = x.EnterpriseComplaint, //投诉
|
|
|
+ EnterpriseReport = x.EnterpriseReport, //举报
|
|
|
+ EnterpriseSuggest = x.EnterpriseSuggest, //建议
|
|
|
+ EnterprisePraise = x.EnterprisePraise, //表扬
|
|
|
+ EnterpriseOpinion = x.EnterprisePraise //意见
|
|
|
+ })
|
|
|
+ .ToDataTableAsync();
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static List<dynamic> ToDynamicList(DataTable dt)
|
|
|
+ {
|
|
|
+ List<dynamic> dynamicList = new List<dynamic>();
|
|
|
+
|
|
|
+ foreach (DataRow row in dt.Rows)
|
|
|
+ {
|
|
|
+ dynamic dynamicObj = new ExpandoObject();
|
|
|
+ var expandoDict = (IDictionary<string, object>)dynamicObj;
|
|
|
+ foreach (DataColumn column in dt.Columns)
|
|
|
+ {
|
|
|
+ expandoDict[column.ColumnName] = row[column];
|
|
|
+ }
|
|
|
+ dynamicList.Add(dynamicObj);
|
|
|
+ }
|
|
|
+
|
|
|
+ return dynamicList;
|
|
|
}
|
|
|
- public static List<dynamic> ToDynamicList( DataTable dt)
|
|
|
- {
|
|
|
- List<dynamic> dynamicList = new List<dynamic>();
|
|
|
-
|
|
|
- foreach (DataRow row in dt.Rows)
|
|
|
- {
|
|
|
- dynamic dynamicObj = new ExpandoObject();
|
|
|
- var expandoDict = (IDictionary<string, object>)dynamicObj;
|
|
|
- foreach (DataColumn column in dt.Columns)
|
|
|
- {
|
|
|
- expandoDict[column.ColumnName] = row[column];
|
|
|
- }
|
|
|
- dynamicList.Add(dynamicObj);
|
|
|
- }
|
|
|
-
|
|
|
- return dynamicList;
|
|
|
- }
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// 受理类型分时统计---导出
|
|
|
- /// </summary>
|
|
|
- /// <param name="dto"></param>
|
|
|
- /// <returns></returns>
|
|
|
- public async Task<DataTable> OrderAcceptanceTimeExport(TimeSharingPagedKeywordRequest dto, List<Kv> title)
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 受理类型分时统计---导出
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<DataTable> OrderAcceptanceTimeExport(TimeSharingPagedKeywordRequest dto, List<Kv> title)
|
|
|
{
|
|
|
List<int> dts = new();
|
|
|
for (int i = 0; i < 24; i++)
|
|
@@ -604,71 +980,76 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
p.count
|
|
|
})
|
|
|
.ToPivotTableAsync(p => p.DicDataName, p => p.Hour, p => p.Sum(x => x.count));
|
|
|
- var dtList = list.Clone();
|
|
|
-
|
|
|
- if (await Db.Queryable<StatisticsPurTypeSatisfied>().Where(x => x.Time >= dto.StartTime && x.Time <= dto.EndTime).AnyAsync())
|
|
|
- {
|
|
|
- // 老系统数据
|
|
|
- var oldData = await Db.Queryable<StatisticsPurTypeSatisfied>()
|
|
|
- .Where(x => x.Time >= dto.StartTime && x.Time <= dto.EndTime)
|
|
|
- .GroupBy(x => x.Month)
|
|
|
- .Select(x => new
|
|
|
- {
|
|
|
- Hour = x.Month.ToString() + ":00 - " + x.Month.ToString() + ":59",
|
|
|
- _1 = SqlFunc.AggregateSum(x.Opinion),
|
|
|
- _2 = SqlFunc.AggregateSum(x.PeopleHelp),
|
|
|
- _3 = SqlFunc.AggregateSum(x.PollutionReporting),
|
|
|
- _10 = SqlFunc.AggregateSum(x.Consult),
|
|
|
- _15 = SqlFunc.AggregateSum(x.Suggest),
|
|
|
- _20 = SqlFunc.AggregateSum(x.SeekHelp),
|
|
|
- _25 = SqlFunc.AggregateSum(x.Praise),
|
|
|
- _30 = SqlFunc.AggregateSum(x.Report),
|
|
|
- _35 = SqlFunc.AggregateSum(x.Complaint),
|
|
|
- _40 = SqlFunc.AggregateSum(x.Rests) + SqlFunc.AggregateSum(x.Invalid),
|
|
|
- _50 = SqlFunc.AggregateSum(x.Epidemic),
|
|
|
- _SB = SqlFunc.AggregateSum(x.Declare),
|
|
|
- }).ToDataTableAsync();
|
|
|
-
|
|
|
- #region 处理数据
|
|
|
-
|
|
|
- foreach (var item in title)
|
|
|
- {
|
|
|
- var isColumn = oldData.Columns.Contains("_"+item.Key);
|
|
|
- if (isColumn)
|
|
|
- {
|
|
|
- oldData.Columns["_" + item.Key].ColumnName = item.Value;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- foreach (DataColumn col in dtList.Columns)
|
|
|
- {
|
|
|
- if (col.ColumnName != "Hour") col.DataType = typeof(Int64);
|
|
|
- }
|
|
|
-
|
|
|
- for (int i = 0; i < list.Rows.Count; i++)
|
|
|
- {
|
|
|
- DataRow newRow = dtList.NewRow();
|
|
|
- for (int j = 0; j < list.Columns.Count; j++)
|
|
|
- {
|
|
|
- if (oldData.Columns[j].ColumnName == "Hour")
|
|
|
- {
|
|
|
- newRow[j] = list.Rows[i][j];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- var num = string.IsNullOrEmpty(list.Rows[i][j].ToString()) ? 0 : int.Parse(list.Rows[i][j].ToString());
|
|
|
- var oldRow = oldData.Select("Hour ='"+ list.Rows[i]["Hour"] + "'").FirstOrDefault();
|
|
|
- //var oldColName = "_" + dtList.Columns[j].ColumnName;
|
|
|
- var allNum = oldRow == null ? num : oldRow.Field<Int64>(dtList.Columns[j].ColumnName) + num;
|
|
|
- newRow[j] = allNum;
|
|
|
- }
|
|
|
- }
|
|
|
- dtList.Rows.Add(newRow);
|
|
|
- }
|
|
|
-
|
|
|
- #endregion
|
|
|
- }
|
|
|
- return InitDatatTable(dtList, dto.AddColumnName);
|
|
|
+ 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())
|
|
|
+ {
|
|
|
+ // 老系统数据
|
|
|
+ var oldData = await Db.Queryable<StatisticsPurTypeSatisfied>()
|
|
|
+ .Where(x => x.Time >= dto.StartTime && x.Time <= dto.EndTime)
|
|
|
+ .GroupBy(x => x.Month)
|
|
|
+ .Select(x => new
|
|
|
+ {
|
|
|
+ Hour = x.Month.ToString() + ":00 - " + x.Month.ToString() + ":59",
|
|
|
+ _1 = SqlFunc.AggregateSum(x.Opinion),
|
|
|
+ _2 = SqlFunc.AggregateSum(x.PeopleHelp),
|
|
|
+ _3 = SqlFunc.AggregateSum(x.PollutionReporting),
|
|
|
+ _10 = SqlFunc.AggregateSum(x.Consult),
|
|
|
+ _15 = SqlFunc.AggregateSum(x.Suggest),
|
|
|
+ _20 = SqlFunc.AggregateSum(x.SeekHelp),
|
|
|
+ _25 = SqlFunc.AggregateSum(x.Praise),
|
|
|
+ _30 = SqlFunc.AggregateSum(x.Report),
|
|
|
+ _35 = SqlFunc.AggregateSum(x.Complaint),
|
|
|
+ _40 = SqlFunc.AggregateSum(x.Rests) + SqlFunc.AggregateSum(x.Invalid),
|
|
|
+ _50 = SqlFunc.AggregateSum(x.Epidemic),
|
|
|
+ _SB = SqlFunc.AggregateSum(x.Declare),
|
|
|
+ }).ToDataTableAsync();
|
|
|
+
|
|
|
+ #region 处理数据
|
|
|
+
|
|
|
+ foreach (var item in title)
|
|
|
+ {
|
|
|
+ var isColumn = oldData.Columns.Contains("_" + item.Key);
|
|
|
+ if (isColumn)
|
|
|
+ {
|
|
|
+ oldData.Columns["_" + item.Key].ColumnName = item.Value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach (DataColumn col in dtList.Columns)
|
|
|
+ {
|
|
|
+ if (col.ColumnName != "Hour") col.DataType = typeof(Int64);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < list.Rows.Count; i++)
|
|
|
+ {
|
|
|
+ DataRow newRow = dtList.NewRow();
|
|
|
+ for (int j = 0; j < list.Columns.Count; j++)
|
|
|
+ {
|
|
|
+ if (oldData.Columns[j].ColumnName == "Hour")
|
|
|
+ {
|
|
|
+ newRow[j] = list.Rows[i][j];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var num = string.IsNullOrEmpty(list.Rows[i][j].ToString()) ? 0 : int.Parse(list.Rows[i][j].ToString());
|
|
|
+ var oldRow = oldData.Select("Hour ='" + list.Rows[i]["Hour"] + "'").FirstOrDefault();
|
|
|
+ //var oldColName = "_" + dtList.Columns[j].ColumnName;
|
|
|
+ var allNum = oldRow == null ? num : oldRow.Field<Int64>(dtList.Columns[j].ColumnName) + num;
|
|
|
+ newRow[j] = allNum;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dtList.Rows.Add(newRow);
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+ }
|
|
|
+ return InitDatatTable(dtList, dto.AddColumnName);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -1401,6 +1782,8 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
public ISugarQueryable<OrgVisitDetailListResp> OrgVisitDetailList(OrgVisitDetailListReq dto)
|
|
|
{
|
|
|
var IsCenter = _sessionContext.OrgIsCenter;
|
|
|
+ if (dto.OrgProcessingResults == null || !dto.OrgProcessingResults.Any() || dto.OrgProcessingResults.First() == null)
|
|
|
+ dto.OrgProcessingResults = null;
|
|
|
|
|
|
return _orderVisitDetailRepository.Queryable()
|
|
|
.Includes(x => x.OrderVisit, x => x.Order)
|
|
@@ -1414,7 +1797,12 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
x => x.OrderVisit.Order.ActualHandleOrgCode != OrgSeedData.CenterId)
|
|
|
.WhereIF(dto.Keyword.NotNullOrEmpty(), x => x.OrderVisit.Order.Title.Contains(dto.Keyword)) // 根据关键字匹配
|
|
|
.WhereIF(dto.TypeCode != 0, x => x.OrderVisit.Order.IdentityType == (EIdentityType)dto.TypeCode)
|
|
|
- .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)
|
|
|
+ //任务 218 市州通用-部门满意度明细:办件结果查询优化为多选
|
|
|
+ //.WhereIF(dto.OrgProcessingResults != null && dto.OrgProcessingResults.Any(),
|
|
|
+ // 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(!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))
|
|
@@ -1428,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,
|
|
@@ -1471,9 +1862,9 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
{
|
|
|
bool IsCenter = _sessionContext.OrgIsCenter;
|
|
|
if (IsCenter == false && string.IsNullOrEmpty(dto.PickOrgCode))
|
|
|
- dto.PickOrgCode = _sessionContext.RequiredOrgId;
|
|
|
+ dto.PickOrgCode = _sessionContext.RequiredOrgId;
|
|
|
|
|
|
- return _orderVisitDetailRepository.Queryable()
|
|
|
+ return _orderVisitDetailRepository.Queryable()
|
|
|
.Includes(x => x.OrderVisit, o => o.Order, d => d.CallRecord)
|
|
|
.Where(x => x.OrderVisit.VisitTime >= dto.StartTime && x.OrderVisit.VisitTime <= dto.EndTime && x.VisitTarget == EVisitTarget.Org && x.OrderVisit.VisitState == EVisitState.Visited)
|
|
|
.WhereIF(dto.OrgCode == "001", x => x.VisitOrgCode == dto.OrgCode)
|
|
@@ -1485,12 +1876,15 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
//.WhereIF(IsCenter == true && dto.IsOnlyMy == null, x => x.VisitOrgCode.StartsWith(dto.OrgCode))
|
|
|
//.WhereIF(IsCenter == true , x=> x.VisitOrgCode.StartsWith(dto.OrgCode))
|
|
|
//.WhereIF(IsCenter == false, x => x.VisitOrgCode == dto.OrgCode)
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && (string.IsNullOrEmpty(dto.PickOrgCode) || dto.OrgCode != dto.PickOrgCode), x => x.VisitOrgCode.StartsWith(dto.OrgCode))
|
|
|
- .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && (!string.IsNullOrEmpty(dto.PickOrgCode) && dto.PickOrgCode == dto.OrgCode) ,x=>x.VisitOrgCode == dto.OrgCode)
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && (string.IsNullOrEmpty(dto.PickOrgCode) || dto.OrgCode != dto.PickOrgCode), x => x.VisitOrgCode.StartsWith(dto.OrgCode))
|
|
|
+ .WhereIF(!string.IsNullOrEmpty(dto.OrgCode) && (!string.IsNullOrEmpty(dto.PickOrgCode) && dto.PickOrgCode == dto.OrgCode), x => x.VisitOrgCode == dto.OrgCode)
|
|
|
.WhereIF(dto.TypeId is 1, x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.DateValue)
|
|
|
.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,
|
|
@@ -1539,10 +1933,19 @@ namespace Hotline.Repository.SqlSugar.Orders
|
|
|
.Where(x => x.OrderVisit.VisitState == EVisitState.Visited && x.VisitTarget == EVisitTarget.Org)
|
|
|
.WhereIF(hiddenOrder.Any(), x => !hiddenOrder.Contains(x.OrderVisit.Order.No))
|
|
|
.WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(orgId))
|
|
|
- .WhereIF(dto.OrgVisitStatisticsType.HasValue, x => x.OrderVisit.Order.FileOrgIsCenter == (dto.OrgVisitStatisticsType== EOrgVisitStatisticsType.CallCenter))
|
|
|
+ .WhereIF(dto.OrgVisitStatisticsType.HasValue, x => x.OrderVisit.Order.FileOrgIsCenter == (dto.OrgVisitStatisticsType == EOrgVisitStatisticsType.CallCenter))
|
|
|
.WhereIF(dto.Keyword.NotNullOrEmpty(), x => x.OrderVisit.Order.Title.Contains(dto.Keyword)) // 根据关键字匹配
|
|
|
.WhereIF(dto.TypeCode != 0, x => x.OrderVisit.Order.IdentityType == (EIdentityType)dto.TypeCode)
|
|
|
- .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)
|
|
|
+ //任务 218 市州通用-部门满意度明细:办件结果查询优化为多选
|
|
|
+ //.WhereIF(dto.OrgProcessingResults != null && dto.OrgProcessingResults.Any(),
|
|
|
+ // 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.Any(),
|
|
|
+ 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.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))
|