田爽 3 сар өмнө
parent
commit
749524619e

+ 55 - 1
src/Hotline.Api/Controllers/Bi/BiQualityController.cs

@@ -7,6 +7,8 @@ using Hotline.Application.Quality;
 using Hotline.Repository.SqlSugar.Extensions;
 using Hotline.Share.Dtos.Quality;
 using Hotline.Tools;
+using Hotline.Quality;
+using Hotline.Share.Enums.Quality;
 
 namespace Hotline.Api.Controllers.Bi
 {
@@ -14,13 +16,18 @@ namespace Hotline.Api.Controllers.Bi
 	{
 		private readonly IMapper _mapper;
 		private readonly IQualityApplication _qualityApplication;
+		private readonly IQualityRepository _qualityRepository;
+
+
 		public BiQualityController(
 			IMapper mapper,
-			IQualityApplication qualityApplication
+			IQualityApplication qualityApplication,
+			IQualityRepository qualityRepository
 			)
 		{
 			_mapper = mapper;
 			_qualityApplication = qualityApplication;
+			_qualityRepository = qualityRepository;
 		}
 
 
@@ -72,5 +79,52 @@ namespace Hotline.Api.Controllers.Bi
 			return ExcelStreamResult(stream, "坐席质检分析");
 
 		}
+
+		#region 质检工作分析
+
+		/// <summary>
+		/// 质检工单概览
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpGet("quality_order_overview")]
+		public async Task<List<QualityOrderOverviewDto>> QualityOrderOverview([FromQuery] QualityWorkAnalysisRequest dto)
+		{
+			var allOrderNum =  await _qualityRepository.Queryable().Where(x => x.Source == EQualitySource.Accepted && x.QualityTime >= dto.StartTime && x.QualityTime <= dto.EndTime && x.State == EQualityState.End).CountAsync();
+			var items = await _qualityApplication.QualityOrderOverview(dto,allOrderNum, HttpContext.RequestAborted).ToListAsync(HttpContext.RequestAborted);
+			return items;
+		}
+
+		/// <summary>
+		/// 质检工单概览导出
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpPost("quality_order_overview/export")]
+		public async Task<FileStreamResult> QualityOrderOverviewExport([FromBody] ExportExcelDto<QualityWorkAnalysisRequest> dto)
+		{
+			var allOrderNum = await _qualityRepository.Queryable().Where(x => x.Source == EQualitySource.Accepted && x.QualityTime >= dto.QueryDto.StartTime && x.QualityTime <= dto.QueryDto.EndTime && x.State == EQualityState.End).CountAsync();
+			var query = _qualityApplication.QualityOrderOverview(dto.QueryDto, allOrderNum, HttpContext.RequestAborted);
+
+			List<QualityOrderOverviewDto> listDtos;
+
+			listDtos = await query.ToListAsync(HttpContext.RequestAborted);
+
+			//var listDtos = _mapper.Map<ICollection<SeatsQualityAnalyseDto>>(lists);
+
+			dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
+
+			var dtos = listDtos
+				.Select(stu => _mapper.Map(stu, typeof(SeatsQualityAnalyseDto), dynamicClass))
+				.Cast<object>()
+				.ToList();
+
+			var stream = ExcelHelper.CreateStream(dtos);
+
+			return ExcelStreamResult(stream, "质检工单概览");
+
+		}
+
+		#endregion
 	}
 }

+ 2 - 0
src/Hotline.Application/Quality/IQualityApplication.cs

@@ -16,5 +16,7 @@ namespace Hotline.Application.Quality
 		Task Transfer_XT(string Id, CancellationToken cancellationToken);
 		ISugarQueryable<Hotline.Quality.Quality> SeatsQualityAnalyse(PagedKeywordRequest dto, CancellationToken cancellationToken);
 
+		ISugarQueryable<QualityOrderOverviewDto> QualityOrderOverview(QualityWorkAnalysisRequest dto, int allOrderNum, CancellationToken cancellationToken);
+
 	}
 }

+ 9 - 5
src/Hotline.Application/Quality/QualityApplication.cs

@@ -455,20 +455,24 @@ namespace Hotline.Application.Quality
             return query;
         }
 
+        /// <summary>
+        /// 质检工单概览
+        /// </summary>
+        /// <returns></returns>
         public  ISugarQueryable<QualityOrderOverviewDto>  QualityOrderOverview(QualityWorkAnalysisRequest dto, int allOrderNum, CancellationToken cancellationToken) {
 
-            //var allOrderNum =  await _qualityRepository.Queryable().Where(x => x.Source == EQualitySource.Accepted && x.QualityTime >= dto.StartTime && x.QualityTime <= dto.EndTime && x.State == EQualityState.End).CountAsync();
-
             var query = _qualiteyDetail.Queryable()
                 .Includes(x => x.Quality)
                 .GroupBy(x => x.Name)
                 .Select(x => new QualityOrderOverviewDto
                 {
-
+                    QualityItem = x.Name,
+                    AllOrderNum = allOrderNum,
+                    OrderNum = SqlFunc.AggregateDistinctCount(x.Quality.OrderId)
                 });
             return query;
-                
-        
         }
+
+
 	}
 }

+ 4 - 0
src/Hotline.Share/Dtos/Quality/BiQualityDto.cs

@@ -83,4 +83,8 @@ namespace Hotline.Share.Dtos.Quality
 
 	}
 
+
+	public class SeatsQualityGradeAnalyseDto 
+	{
+	}
 }

+ 1 - 1
src/Hotline.Share/Dtos/Quality/QualityDto.cs

@@ -177,7 +177,7 @@ namespace Hotline.Share.Dtos.Quality
 		/// </summary>
 		public EQualityTransferState? TransferState { get; set; }
 
-		public string TransferStateText => TransferState.GetDescription();
+		public string TransferStateText => TransferState.HasValue ? TransferState.GetDescription() : string.Empty;
 
 		/// <summary>
 		/// 转写内容