Pārlūkot izejas kodu

热点满意度

田爽 9 mēneši atpakaļ
vecāks
revīzija
8289661332

+ 107 - 1
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -3276,5 +3276,111 @@ namespace Hotline.Api.Controllers.Bi
 
 
         }
-    }
+
+
+		/// <summary>
+		/// 热点满意度统计
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpGet("visit-hotspot-satisfaction-statistics")]
+		public async Task<Object> VisitAndHotspotSatisfactionStatistics([FromQuery] VisitAndHotspotPagedKeywordRequest dto)
+		{
+			var data = await _orderApplication.VisitAndHotspotSatisfactionStatistics(dto);
+			var sumModel = new VisitAndHotspotSatisfactionStatisticsDto()
+			{
+				HotspotName = "总计",
+				TotalSumCount = data.Sum(x => x.TotalSumCount),
+				VerySatisfiedCount = data.Sum(x => x.VerySatisfiedCount),
+				SatisfiedCount = data.Sum(x => x.SatisfiedCount),
+				RegardedAsSatisfiedCount = data.Sum(x => x.RegardedAsSatisfiedCount),
+				DefaultSatisfiedCount = data.Sum(x => x.DefaultSatisfiedCount),
+				NoSatisfiedCount = data.Sum(x => x.NoSatisfiedCount),
+				NoEvaluateCount = data.Sum(x => x.NoEvaluateCount),
+				NoPutThroughCount = data.Sum(x => x.NoPutThroughCount),
+			};
+
+			return new { DataList = data, SumModel = sumModel };
+		}
+
+		/// <summary>
+		/// 热点满意度统计导出
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpPost("visit-hotspot-satisfaction-statistics/_export")]
+		public async Task<FileStreamResult> VisitAndHotspotSatisfactionStatisticsExport([FromBody] ExportExcelDto<VisitAndHotspotPagedKeywordRequest> dto)
+		{
+			List<VisitAndHotspotSatisfactionStatisticsDto> data = await _orderApplication.VisitAndHotspotSatisfactionStatistics(dto.QueryDto);
+			var sumModel = new VisitAndHotspotSatisfactionStatisticsDto()
+			{
+				HotspotName = "总计",
+				TotalSumCount = data.Sum(x => x.TotalSumCount),
+				VerySatisfiedCount = data.Sum(x => x.VerySatisfiedCount),
+				SatisfiedCount = data.Sum(x => x.SatisfiedCount),
+				RegardedAsSatisfiedCount = data.Sum(x => x.RegardedAsSatisfiedCount),
+				DefaultSatisfiedCount = data.Sum(x => x.DefaultSatisfiedCount),
+				NoSatisfiedCount = data.Sum(x => x.NoSatisfiedCount),
+				NoEvaluateCount = data.Sum(x => x.NoEvaluateCount),
+				NoPutThroughCount = data.Sum(x => x.NoPutThroughCount),
+			};
+			data.Add(sumModel);
+			dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
+			var dtos = data
+			 .Select(stu => _mapper.Map(stu, typeof(VisitAndHotspotSatisfactionStatisticsDto), dynamicClass))
+			 .Cast<object>()
+			 .ToList();
+
+			var stream = ExcelHelper.CreateStream(dtos);
+
+			return ExcelStreamResult(stream, "热点满意度统计数据");
+		}
+
+		/// <summary>
+		/// 热点满意度明细
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpGet("visit-hotspot-satisfaction-detail")]
+		public async Task<PagedDto<OrderVisitDetailDto>> VisitAndHotspotSatisfactionDetail([FromQuery] VisitAndHotspotPagedKeywordRequest dto)
+		{
+			var (total, items) = await _orderApplication.VisitAndHotspotSatisfactionDetail(dto)
+				.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+			return new PagedDto<OrderVisitDetailDto>(total, _mapper.Map<IReadOnlyList<OrderVisitDetailDto>>(items));
+		}
+
+		/// <summary>
+		/// 热点满意度明细导出
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpPost("visit-hotspot-satisfaction-detail/_export")]
+		public async Task<FileStreamResult> VisitAndHotspotSatisfactionDetailExport([FromBody] ExportExcelDto<VisitAndHotspotPagedKeywordRequest> dto)
+		{
+			var query = _orderApplication.VisitAndHotspotSatisfactionDetail(dto.QueryDto);
+			List<OrderVisitDetail> data;
+			if (dto.IsExportAll)
+			{
+				data = await query.ToListAsync(HttpContext.RequestAborted);
+			}
+			else
+			{
+				var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
+				data = items;
+			}
+
+			var dataDtos = _mapper.Map<ICollection<OrderVisitDetailDto>>(data);
+
+			dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
+
+			var dtos = dataDtos
+				.Select(stu => _mapper.Map(stu, typeof(OrderVisitDetailDto), dynamicClass))
+				.Cast<object>()
+				.ToList();
+
+			var stream = ExcelHelper.CreateStream(dtos);
+
+			return ExcelStreamResult(stream, "热点满意度明细数据");
+		}
+	}
 }

+ 16 - 1
src/Hotline.Application/Orders/IOrderApplication.cs

@@ -170,5 +170,20 @@ namespace Hotline.Application.Orders
         /// <param name="HotspotLevel"></param>
         /// <returns></returns>
         DataTable InitHotspotTable(DataTable dt, List<string> AddColumnName, int HotspotLevel);
-    }
+
+
+        /// <summary>
+        /// 热点类型满意度统计
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        Task<List<VisitAndHotspotSatisfactionStatisticsDto>> VisitAndHotspotSatisfactionStatistics(VisitAndHotspotPagedKeywordRequest dto);
+
+        /// <summary>
+        /// 热点满意度明细统计
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        ISugarQueryable<OrderVisitDetail> VisitAndHotspotSatisfactionDetail(VisitAndHotspotPagedKeywordRequest dto);
+	}
 }

+ 90 - 8
src/Hotline.Application/Orders/OrderApplication.cs

@@ -1220,15 +1220,97 @@ public class OrderApplication : IOrderApplication, IScopeDependency
 
         return dt2;
     }
-    #region private
 
-    /// <summary>
-    /// 接受外部工单(除省平台)
-    /// </summary>
-    /// <param name="dto"></param>
-    /// <param name="cancellationToken"></param>
-    /// <returns></returns>
-    private async Task<AddOrderResponse> ReceiveOrderFromOtherPlatformAsync(AddOrderDto dto, List<FileDto> files,
+	/// <summary>
+	/// 热点类型满意度统计
+	/// </summary>
+	/// <returns></returns>
+	public async Task<List<VisitAndHotspotSatisfactionStatisticsDto>> VisitAndHotspotSatisfactionStatistics(VisitAndHotspotPagedKeywordRequest dto)
+	{
+		dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
+
+		bool IsCenter = _sessionContext.OrgIsCenter;
+
+		var list = _orderVisitDetailRepository.Queryable()
+			.Includes(x => x.OrderVisit, v => v.Order)
+			.InnerJoin<Hotspot>((x, h) => h.Id == x.OrderVisit.Order.HotspotId.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("2")) && h.ParentId == null)
+			.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.HotspotName) == false, (x, h) => h.HotSpotName == dto.HotspotName)
+			.WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(_sessionContext.OrgId));
+
+		var data = new List<VisitAndHotspotSatisfactionStatisticsDto>();
+
+		if (IsCenter && list != null)
+		{
+			data = await list.GroupBy(x => new
+			{
+				HotspotId = x.OrderVisit.Order.HotspotId.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("2"))
+			})
+			.Select((x, h) => new VisitAndHotspotSatisfactionStatisticsDto()
+			{
+				HotspotName = h.HotSpotName,
+				HotspotId = x.OrderVisit.Order.HotspotId.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("2")),
+				TotalSumCount = SqlFunc.AggregateCount(x.OrderVisit.Order.HotspotId.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("2"))),
+				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))),//未接通
+			})
+			.ToListAsync();
+		}
+		else
+		{
+			data = await list.GroupBy(x => new
+			{
+				x.VisitOrgCode
+			})
+			.Select((x, h) => new VisitAndHotspotSatisfactionStatisticsDto()
+			{
+				HotspotName = h.HotSpotName,
+				HotspotId = x.OrderVisit.Order.HotspotId.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("2")),
+				TotalSumCount = SqlFunc.AggregateCount(x.OrderVisit.Order.HotspotId.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("2"))),
+				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))),//未接通
+			})
+			.ToListAsync();
+		}
+		return data;
+	}
+
+	/// <summary>
+	/// 热点满意度明细统计
+	/// </summary>
+	/// <param name="dto"></param>
+	/// <returns></returns>
+	public ISugarQueryable<OrderVisitDetail> VisitAndHotspotSatisfactionDetail(VisitAndHotspotPagedKeywordRequest dto)
+	{
+		dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
+		bool IsCenter = _sessionContext.OrgIsCenter;
+		return _orderVisitDetailRepository.Queryable()
+			.Includes(x => x.OrderVisit, o => o.Order)
+			.Where(x => x.OrderVisit.VisitTime >= dto.StartTime && x.OrderVisit.VisitTime <= dto.EndTime && x.VisitTarget == EVisitTarget.Org && x.OrderVisit.VisitState == EVisitState.Visited)
+			.WhereIF(!string.IsNullOrEmpty(dto.HotspotId), x => x.OrderVisit.Order.HotspotId.StartsWith(dto.HotspotId))
+			.WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(_sessionContext.OrgId))
+			.WhereIF(dto.TypeId is 1, x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.TitleCode)
+			.WhereIF(dto.TypeId is 2, x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.TitleCode);
+	}
+	#region private
+
+	/// <summary>
+	/// 接受外部工单(除省平台)
+	/// </summary>
+	/// <param name="dto"></param>
+	/// <param name="cancellationToken"></param>
+	/// <returns></returns>
+	private async Task<AddOrderResponse> ReceiveOrderFromOtherPlatformAsync(AddOrderDto dto, List<FileDto> files,
         ISessionContext current, CancellationToken cancellationToken)
     {
         if (string.IsNullOrEmpty(dto.ExternalId))

+ 196 - 0
src/Hotline.Share/Dtos/Order/OrderBiDto.cs

@@ -859,7 +859,203 @@ namespace Hotline.Share.Dtos.Order
 
 		public string RateText => GetRate() + "%";
 	}
+	public class VisitAndHotspotSatisfactionStatisticsDto
+	{
+		public string HotspotId { get; set; }
+
+		public string HotspotName { get; set; }
+
+		/// <summary>
+		/// 总数
+		/// </summary>
+		public int TotalSumCount { get; set; }
+
+		/// <summary>
+		/// 总满意度
+		/// </summary>
+		public double TotalSumRate => Math.Round(VerySatisfiedRate + SatisfiedRate + RegardedAsSatisfiedRate + DefaultSatisfiedRate, 2);
+
+		public string TotalSumRateText => TotalSumRate + "%";
+		/// <summary>
+		/// 非常满意数
+		/// </summary>
+		public int VerySatisfiedCount { get; set; }
+
+		/// <summary>
+		/// 非常满意Key
+		/// </summary>
+		public string VerySatisfiedKey => "5";
+
+		/// <summary>
+		/// 非常满意率
+		/// </summary>
+		public double VerySatisfiedRate => CalcVerySatisfiedRate();
+
+		public double CalcVerySatisfiedRate()
+		{
+			if (VerySatisfiedCount == 0 || TotalSumCount == 0)
+			{
+				return 0;
+			}
+			return Math.Round((VerySatisfiedCount / (double)TotalSumCount) * 100, 2);
+		}
+		public string VerySatisfiedRateText => VerySatisfiedRate + "%";
+
+		/// <summary>
+		/// 满意数
+		/// </summary>
+		public int SatisfiedCount { get; set; }
+
+		/// <summary>
+		/// 满意Key
+		/// </summary>
+		public string SatisfiedKey => "4";
+
+		/// <summary>
+		/// 满意率
+		/// </summary>
+		public double SatisfiedRate => CalcSatisfiedRate();
+
+
+		public double CalcSatisfiedRate()
+		{
+			if (SatisfiedCount == 0 || TotalSumCount == 0)
+			{
+				return 0;
+			}
+			return Math.Round((SatisfiedCount / (double)TotalSumCount) * 100, 2);
+		}
+
+		public string SatisfiedRateText => SatisfiedRate + "%";
+		/// <summary>
+		/// 视为满意数
+		/// </summary>
+		public int RegardedAsSatisfiedCount { get; set; }
+
+		/// <summary>
+		/// 视为满意Key
+		/// </summary>
+		public string RegardedAsSatisfiedKey => "-1";
+
+		/// <summary>
+		/// 视为满意率
+		/// </summary>
+		public double RegardedAsSatisfiedRate => CalcRegardedAsSatisfiedRate();
+
+		public double CalcRegardedAsSatisfiedRate()
+		{
+			if (RegardedAsSatisfiedCount == 0 || TotalSumCount == 0)
+			{
+				return 0;
+			}
+			return Math.Round((RegardedAsSatisfiedCount / (double)TotalSumCount) * 100, 2);
+		}
+		public string RegardedAsSatisfiedRateText => RegardedAsSatisfiedRate + "%";
+		/// <summary>
+		/// 默认满意数
+		/// </summary>
+		public int DefaultSatisfiedCount { get; set; }
+
+		/// <summary>
+		/// 默认满意Key
+		/// </summary>
+		public string DefaultSatisfiedKey => "0";
+
+		/// <summary>
+		/// 默认满意率
+		/// </summary>
+		public double DefaultSatisfiedRate => CalcDefaultSatisfiedRate();
+
+		public double CalcDefaultSatisfiedRate()
+		{
+			if (DefaultSatisfiedCount == 0 || TotalSumCount == 0)
+			{
+				return 0;
+			}
+			return Math.Round((DefaultSatisfiedCount / (double)TotalSumCount) * 100, 2);
+		}
+		public string DefaultSatisfiedRateText => DefaultSatisfiedRate + "%";
+
+		/// <summary>
+		/// 不满意数
+		/// </summary>
+		public int NoSatisfiedCount { get; set; }
+
+		/// <summary>
+		/// 不满意Key
+		/// </summary>
+		public string NoSatisfiedKey => "2";
+
+		/// <summary>
+		/// 不满意率
+		/// </summary>
+		public double NoSatisfiedRate => CalcNoSatisfiedRate();
+
+
+		public double CalcNoSatisfiedRate()
+		{
+			if (NoSatisfiedCount == 0 || TotalSumCount == 0)
+			{
+				return 0;
+			}
+			return Math.Round((NoSatisfiedCount / (double)TotalSumCount) * 100, 2);
+		}
+		public string NoSatisfiedRateText => NoSatisfiedRate + "%";
+
+
+		/// <summary>
+		/// 未做评价数
+		/// </summary>
+		public int NoEvaluateCount { get; set; }
 
+		/// <summary>
+		/// 未做评价Key
+		/// </summary>
+		public string NoEvaluateKey => "7";
+
+		/// <summary>
+		/// 未做评价率
+		/// </summary>
+		public double NoEvaluateRate => CalcNoEvaluateRate();
+
+
+		public double CalcNoEvaluateRate()
+		{
+			if (NoEvaluateCount == 0 || TotalSumCount == 0)
+			{
+				return 0;
+			}
+			return Math.Round((NoEvaluateCount / (double)TotalSumCount) * 100, 2);
+		}
+
+		public string NoEvaluateRateText => NoEvaluateRate + "%";
+
+		/// <summary>
+		/// 未接通数
+		/// </summary>
+		public int NoPutThroughCount { get; set; }
+
+		/// <summary>
+		/// 未接通Key
+		/// </summary>
+		public string NoPutThroughKey => "6";
+
+		/// <summary>
+		/// 未接通率
+		/// </summary>
+		public double NoPutThroughRate => CalcNoPutThroughRate();
+
+
+		public double CalcNoPutThroughRate()
+		{
+			if (NoPutThroughCount == 0 || TotalSumCount == 0)
+			{
+				return 0;
+			}
+			return Math.Round((NoPutThroughCount / (double)TotalSumCount) * 100, 2);
+		}
+		public string NoPutThroughRateText => NoPutThroughRate + "%";
+	}
 	public class OrderSourceHeaderVo {
 		/// <summary>
 		/// 日期

+ 22 - 0
src/Hotline.Share/Requests/PagedKeywordRequest.cs

@@ -38,7 +38,29 @@ public record PagedKeywordSonRequest : PagedRequest
 
     public string? LineNum { get; set; }
 }
+public record VisitAndHotspotPagedKeywordRequest : PagedKeywordRequest
+{
+	/// <summary>
+	/// 热点名称
+	/// </summary>
+	public string? HotspotName { get; set; }
 
+	/// <summary>
+	/// 热点id
+	/// </summary>
+	public string? HotspotId { get; set; }
+
+	/// <summary>
+	/// 1:办件结果 2:办件态度
+	/// </summary>
+	public int? TypeId { get; set; }
+
+	/// <summary>
+	/// 标题名称
+	/// </summary>
+
+	public string? TitleCode { get; set; }
+}
 public record ReportPagedRequest : PagedKeywordRequest
 {