فهرست منبع

禅道324 关于【甄别】的优化

田爽 7 ماه پیش
والد
کامیت
d678c412df

+ 27 - 6
src/Hotline.Api/Controllers/OrderController.cs

@@ -2028,6 +2028,15 @@ public class OrderController : BaseController
                 throw UserFriendlyException.SameMessage("甄别申请时限已超过系统预定设置,不能申请");
         }
 
+        var visitDetail = await _orderVisitedDetailRepository.GetAsync(dto.Data.VisitDetailId, HttpContext.RequestAborted);
+        if (_appOptions.Value.IsZiGong && visitDetail.ScreenByEndTime.HasValue)
+        {
+	        if (DateTime.Now > visitDetail.ScreenByEndTime && !_sessionContext.OrgIsCenter)
+	        {
+				throw UserFriendlyException.SameMessage("超过2个工作日不能申请甄别,不能申请");
+			}
+        }
+
         var model = _mapper.Map<OrderScreen>(dto.Data);
         model.Status = EScreenStatus.Approval;
         model.ApplyEndTime = endTime;
@@ -2210,16 +2219,28 @@ public class OrderController : BaseController
         return rspModel;
     }
 
-    #endregion
-
-    #region 工单督办
-
     /// <summary>
-    /// 工单督办列表
+    /// 更新甄别提起截至时限
     /// </summary>
     /// <param name="dto"></param>
     /// <returns></returns>
-    [HttpGet("supervise")]
+    [HttpPut("order_screen_endtime")]
+    [LogFilter("更新甄别提起截至时限")]
+    public async Task Update([FromBody] OrderScreenEndTimeDto dto)
+    {
+        await _orderVisitedDetailRepository.Updateable().SetColumns(x => x.ScreenByEndTime = dto.ScreenByEndTime).Where(x => x.Id == dto.VisitDetailId).ExecuteCommandAsync();
+    }
+
+	#endregion
+
+	#region 工单督办
+
+	/// <summary>
+	/// 工单督办列表
+	/// </summary>
+	/// <param name="dto"></param>
+	/// <returns></returns>
+	[HttpGet("supervise")]
     public async Task<PagedDto<SuperviseOrderDto>> SuperviseList([FromQuery] SuperviseListDto dto)
     {
         var (total, items) = await _orderSuperviseRepository.Queryable()

+ 3 - 1
src/Hotline.Application/Orders/OrderApplication.cs

@@ -824,7 +824,9 @@ public class OrderApplication : IOrderApplication, IScopeDependency
                 }
 
                 _mapper.Map(detaildto, visit.OrderVisitDetails[i]);
-            }
+                //计算甄别提起时限
+                visit.OrderVisitDetails[i].ScreenByEndTime = (await _expireTime.CalcEndTime(DateTime.Now, ETimeType.WorkDay, 2, 0, 0)).EndTime;
+			}
         }
 
         await _orderVisitRepository.UpdateAsync(visit, cancellationToken);

+ 12 - 0
src/Hotline.Share/Dtos/Order/OrderScreenDto.cs

@@ -331,4 +331,16 @@ namespace Hotline.Share.Dtos.Order
 		/// </summary>
 		public string AreaCode { get; set; }
 	}
+
+	public class OrderScreenEndTimeDto {
+		/// <summary>
+		/// 回访明细id
+		/// </summary>
+		public string VisitDetailId { get; set; }
+
+		/// <summary>
+		/// 截至甄别时间
+		/// </summary>
+		public DateTime ScreenByEndTime { get; set; }
+	}
 }

+ 6 - 1
src/Hotline/Orders/OrderVisitDetail.cs

@@ -94,5 +94,10 @@ namespace Hotline.Orders
         /// 回访对象类型 10:话务员 20:部门
         /// </summary>
         public EVisitTarget VisitTarget { get; set; }
-    }
+
+		/// <summary>
+		/// 截至甄别时间
+		/// </summary>
+		public DateTime? ScreenByEndTime { get; set; }
+	}
 }