Dun.Jason 1 năm trước cách đây
mục cha
commit
ea81e44e30

+ 7 - 6
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -613,23 +613,24 @@ namespace Hotline.Api.Controllers.Bi
 		/// <param name="LineNum"></param>
 		/// <returns></returns>
 		[HttpGet("visit-org-satisfaction-statistics")]
-		public async Task VisitAndOrgSatisfactionStatistics(DateTime StartDate, DateTime EndDate, string OrgName, int TypeId, string? LineNum)
+		public async Task<List<VisitAndOrgSatisfactionStatisticsDto>> VisitAndOrgSatisfactionStatistics(DateTime StartDate, DateTime EndDate, string OrgName, int TypeId, string? LineNum)
 		{
 			EndDate = EndDate.AddDays(1).AddSeconds(-1);
 			var list = await _orderVisitDetailRepository.Queryable()
 				.Includes(x => x.OrderVisit)
-				.Where(x => x.OrderVisit.VisitTime >= StartDate && x.OrderVisit.VisitTime <= EndDate && x.VisitTarget == EVisitTarget.Org)
+				.Where(x => x.OrderVisit.VisitTime >= StartDate && x.OrderVisit.VisitTime <= EndDate && x.VisitTarget == EVisitTarget.Org && x.OrderVisit.VisitState == EVisitState.Visited)
 				.WhereIF(!string.IsNullOrEmpty(OrgName), x => x.VisitOrgName.Contains(OrgName))
 				.GroupBy(x => new { x.VisitOrgCode, x.VisitOrgName })
-				.Select(x => new
-				{
+				.Select(x => new VisitAndOrgSatisfactionStatisticsDto()
+                {
 					OrgName = x.VisitOrgName,
 					OrgCode = x.VisitOrgCode,
-
+					TotalSumCount = SqlFunc.AggregateCount(x.VisitOrgCode),
+					VerySatisfiedCount = SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonListObjectAny(x.OrgProcessingResults,"key","5"),1,0)),//非常满意数
 				})
 				.ToListAsync();
 
-
+			return list;
 		}
 	}
 }

+ 1 - 1
src/Hotline.Api/Controllers/TestController.cs

@@ -184,7 +184,7 @@ public class TestController : BaseController
 
         //int a = _timeLimitDomainService.CalcWorkTime(DateTime.Now, DateTime.Parse("2023-09-11 16:21:00"));
         //int m = _timeLimitDomainService.CalcWorkTime(DateTime.Parse("2023-09-19 12:00:00"), DateTime.Parse("2023-09-20 18:00:00"), false);
-        //var r = _timeLimitDomainService.CalcEndTime(DateTime.Parse("2024-01-31 18:00:00"), ETimeType.WorkDay,1,false,50);
+        var r = _timeLimitDomainService.CalcEndTime(DateTime.Parse("2024-02-28 18:00:00"), ETimeType.WorkDay,3,false,50);
         //await _wfModuleDomainService.PersistenceModulesAsync(HttpContext.RequestAborted);
 
         //var rsp = await _daprClient.InvokeMethodAsync<ApiResponse<string>>(HttpMethod.Get, "identity", "api/v1/Test/time", HttpContext.RequestAborted);

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

@@ -182,4 +182,94 @@ namespace Hotline.Share.Dtos.Order
 
 		public int SumCount { get; set; }
     }
+
+
+	public class VisitAndOrgSatisfactionStatisticsDto
+	{
+		public string OrgName { get; set; }
+
+		public string OrgCode { get; set; }
+
+		public EOrgType OrgType { get; set; }
+
+        /// <summary>
+        /// 总数
+        /// </summary>
+        public int TotalSumCount { get; set; }
+
+		/// <summary>
+		/// 总满意度
+		/// </summary>
+		public double TotalSumRate { get; set; }
+
+		/// <summary>
+		/// 非常满意数
+		/// </summary>
+		public int VerySatisfiedCount { get; set; }
+
+		/// <summary>
+		/// 非常满意率
+		/// </summary>
+		public double VerySatisfiedRate { get; set; }
+
+		/// <summary>
+		/// 满意数
+		/// </summary>
+		public int SatisfiedCount { get; set; }
+
+		/// <summary>
+		/// 满意率
+		/// </summary>
+		public double SatisfiedRate { get; set; }
+
+		/// <summary>
+		/// 一般满意数
+		/// </summary>
+		public int GeneralSatisfiedCount { get; set; }
+
+		/// <summary>
+		/// 一般满意率
+		/// </summary>
+		public double GeneralSatisfiedRate { get; set; }
+
+		/// <summary>
+		/// 不满意数
+		/// </summary>
+		public int NoSatisfiedCount { get; set; }
+
+		/// <summary>
+		/// 不满意率
+		/// </summary>
+		public  double NoSatisfiedRate { get; set; }
+
+		/// <summary>
+		/// 非常不满意数
+		/// </summary>
+		public int VeryNoSatisfiedCount { get; set; }
+
+		/// <summary>
+		/// 非常不满意率
+		/// </summary>
+		public double VeryNoSatisfiedRate { get; set; }
+
+		/// <summary>
+		/// 未做评价数
+		/// </summary>
+		public int NoEvaluateCount { get; set; }
+
+		/// <summary>
+		/// 未做评价率
+		/// </summary>
+		public double NoEvaluateRate { get; set; }
+
+		/// <summary>
+		/// 未接通数
+		/// </summary>
+		public int NoPutThroughCount { get; set; }
+
+		/// <summary>
+		/// 未接通率
+		/// </summary>
+		public double NoPutThroughRate { get; set; }
+    }
 }

+ 7 - 2
src/Hotline.Share/Dtos/Order/OrderDto.cs

@@ -428,14 +428,19 @@ namespace Hotline.Share.Dtos.Order
 
         public EExpiredStatus? CalculateExpiredState()
         {
+            DateTime? dateTime = DateTime.Now;
+            if (Status>= EOrderStatus.Filed)
+            {
+                dateTime = ActualHandleTime;
+            }
             //ExpiredStatus
             if (ExpiredTime.HasValue)
             {
-                if (DateTime.Now< NearlyExpiredTime)
+                if (dateTime < NearlyExpiredTime)
                 {
                     return EExpiredStatus.Normal;
                 }
-                else if (DateTime.Now> NearlyExpiredTime && DateTime.Now < ExpiredTime)
+                else if (dateTime > NearlyExpiredTime && dateTime < ExpiredTime)
                 {
                     return EExpiredStatus.GoingToExpired;
                 }