Преглед изворни кода

工单督办、工单催办

田爽 пре 1 година
родитељ
комит
4201f29cd9

+ 23 - 11
src/Hotline.Api/Controllers/OrderController.cs

@@ -527,17 +527,18 @@ public class OrderController : BaseController
     /// <returns></returns>
     [Permission(EPermission.SuperviseOrderList)]
     [HttpGet("supervise")]
-    public async Task<PagedDto<OrderSupervise>> SuperviseList([FromQuery] SuperviseListDto dto)
+    public async Task<PagedDto<SuperviseOrderDto>> SuperviseList([FromQuery] SuperviseListDto dto)
     {
         var (total, items) = await _orderSuperviseRepository.Queryable()
             .Includes(x => x.Order)
             .Includes(x => x.Organize)
-            .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
+            .Includes(x => x.CrOrganize)
+			.WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
             .WhereIF(dto.SuperviseState > 0, x => x.State == dto.SuperviseState)
             .OrderByDescending(x => x.CreationTime)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
 
-        return new PagedDto<OrderSupervise>(total, _mapper.Map<IReadOnlyList<OrderSupervise>>(items));
+        return new PagedDto<SuperviseOrderDto>(total, _mapper.Map<IReadOnlyList<SuperviseOrderDto>>(items));
     }
 
     /// <summary>
@@ -572,10 +573,15 @@ public class OrderController : BaseController
         var supervise = await _orderSuperviseRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
         if (supervise is null)
             throw UserFriendlyException.SameMessage("无效督办");
+        if (supervise.State > 0)
+	        throw UserFriendlyException.SameMessage("督办已回复,请勿重复回复");
 
-        var model = _mapper.Map<OrderSupervise>(dto);
+		var model = _mapper.Map<OrderSupervise>(dto);
         model.ReplyId = _sessionContext.UserId;
-        await _orderSuperviseRepository.UpdateAsync(model, HttpContext.RequestAborted);
+        model.ReplyTime = DateTime.Now;
+        model.State = 1;
+		model.Id = dto.Id;
+		await _orderSuperviseRepository.UpdateAsync(model, HttpContext.RequestAborted);
     }
 
     /// <summary>
@@ -594,7 +600,8 @@ public class OrderController : BaseController
 
         var model = _mapper.Map<OrderSupervise>(dto);
         model.SignTime = DateTime.Now;
-        await _orderSuperviseRepository.UpdateAsync(model, HttpContext.RequestAborted);
+        model.Id = dto.Id;
+		await _orderSuperviseRepository.UpdateAsync(model, HttpContext.RequestAborted);
     }
 
 
@@ -624,17 +631,18 @@ public class OrderController : BaseController
     /// <returns></returns>
     [Permission(EPermission.UrgeOrderList)]
     [HttpGet("urge")]
-    public async Task<PagedDto<OrderUrge>> UrgeList([FromQuery] UrgeListDto dto)
+    public async Task<PagedDto<UrgeOrderDto>> UrgeList([FromQuery] UrgeListDto dto)
     {
         var (total, items) = await _orderUrgeRepository.Queryable()
             .Includes(x => x.Order)
             .Includes(x => x.Organize)
-            .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
+            .Includes(x => x.CrOrganize)
+			.WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
             .WhereIF(dto.SuperviseState > 0, x => x.State == dto.SuperviseState)
             .OrderByDescending(x => x.CreationTime)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
 
-        return new PagedDto<OrderUrge>(total, _mapper.Map<IReadOnlyList<OrderUrge>>(items));
+        return new PagedDto<UrgeOrderDto>(total, _mapper.Map<IReadOnlyList<UrgeOrderDto>>(items));
     }
 
     /// <summary>
@@ -671,7 +679,10 @@ public class OrderController : BaseController
 
         var model = _mapper.Map<OrderUrge>(dto);
         model.ReplyId = _sessionContext.UserId;
-        await _orderUrgeRepository.UpdateAsync(model, HttpContext.RequestAborted);
+        model.ReplyTime = DateTime.Now;
+        model.State = 1;
+		model.Id = dto.Id;
+		await _orderUrgeRepository.UpdateAsync(model, HttpContext.RequestAborted);
     }
 
     /// <summary>
@@ -690,7 +701,8 @@ public class OrderController : BaseController
 
         var model = _mapper.Map<OrderUrge>(dto);
         model.SignTime = DateTime.Now;
-        await _orderUrgeRepository.UpdateAsync(model, HttpContext.RequestAborted);
+        model.Id = dto.Id;
+		await _orderUrgeRepository.UpdateAsync(model, HttpContext.RequestAborted);
     }
 
 

+ 165 - 1
src/Hotline.Share/Dtos/Order/OrderDto.cs

@@ -1,5 +1,6 @@
 using Hotline.Share.Dtos.FlowEngine;
 using Hotline.Share.Dtos.Hotspots;
+using Hotline.Share.Dtos.Org;
 using Hotline.Share.Enums.FlowEngine;
 using Hotline.Share.Enums.Order;
 using Hotline.Share.Enums.Settings;
@@ -644,6 +645,169 @@ namespace Hotline.Share.Dtos.Order
         /// 附件
         /// </summary>
         public string ClientGuid { get; set; }
-    }
+	}
+
+    public class SuperviseOrderDto {
+
+        /// <summary>
+        /// 督办ID
+        /// </summary>
+		public string Id { get; set; }
+
+        /// <summary>
+        /// 工单ID
+        /// </summary>
+        public string OrderId { get; set; }
+
+        /// <summary>
+        /// 督办回复时限
+        /// </summary>
+        public DateTime ReplyLimitTime { get; set; }
+
+        /// <summary>
+        /// 被督办部门ID
+        /// </summary>
+        public string OrgId { get; set; }
+
+        /// <summary>
+        /// 督办状态
+        /// </summary>
+        public int State { get; set; }
+
+        /// <summary>
+        /// 督办签收时间
+        /// </summary>
+        public DateTime? SignTime { get; set; }
+
+        /// <summary>
+        /// 督办回复时间
+        /// </summary>
+        public DateTime? ReplyTime { get; set; }
+
+        /// <summary>
+        /// 督办申请内容
+        /// </summary>
+        public string? ApplyContent { get; set; }
+
+        /// <summary>
+        /// 督办回复内容
+        /// </summary>
+        public string? ReplyContent { get; set; }
+
+        /// <summary>
+        /// 回复人
+        /// </summary>
+        public string? ReplyId { get; set; }
+
+        /// <summary>
+        /// 附件
+        /// </summary>
+        public List<string>? Additions { get; set; } = new();
+
+        public DateTime? LastModificationTime { get; set; }
+
+        public string? CreatorId { get; set; }
+
+        public string? CreatorOrgId { get; set; }
+
+        public DateTime CreationTime { get; set; }
+
+		/// <summary>
+		/// 工单对象
+		/// </summary>
+		public OrderDto Order { get; set; }
+
+		/// <summary>
+		/// 机构对象
+		/// </summary>
+		public OrgDto Organize { get; set; }
+
+		/// <summary>
+		/// 机构对象
+		/// </summary>
+		public OrgDto CrOrganize { get; set; }
+	}
+
+
+    public class UrgeOrderDto
+    {
 
+	    /// <summary>
+	    /// 催办ID
+	    /// </summary>
+	    public string Id { get; set; }
+
+	    /// <summary>
+	    /// 工单ID
+	    /// </summary>
+	    public string OrderId { get; set; }
+
+	    /// <summary>
+	    /// 催办回复时限
+	    /// </summary>
+	    public DateTime ReplyLimitTime { get; set; }
+
+	    /// <summary>
+	    /// 被催办部门ID
+	    /// </summary>
+	    public string OrgId { get; set; }
+
+	    /// <summary>
+	    /// 催办状态
+	    /// </summary>
+	    public int State { get; set; }
+
+	    /// <summary>
+	    /// 催办签收时间
+	    /// </summary>
+	    public DateTime? SignTime { get; set; }
+
+	    /// <summary>
+	    /// 催办回复时间
+	    /// </summary>
+	    public DateTime? ReplyTime { get; set; }
+
+	    /// <summary>
+	    /// 催办申请内容
+	    /// </summary>
+	    public string? ApplyContent { get; set; }
+
+	    /// <summary>
+	    /// 催办回复内容
+	    /// </summary>
+	    public string? ReplyContent { get; set; }
+
+	    /// <summary>
+	    /// 回复人
+	    /// </summary>
+	    public string? ReplyId { get; set; }
+
+	    /// <summary>
+	    /// 附件
+	    /// </summary>
+	    public List<string>? Additions { get; set; } = new();
+
+	    public DateTime? LastModificationTime { get; set; }
+
+	    public string? CreatorId { get; set; }
+
+	    public string? CreatorOrgId { get; set; }
+
+	    public DateTime CreationTime { get; set; }
+
+	    /// <summary>
+	    /// 工单对象
+	    /// </summary>
+	    public OrderDto Order { get; set; }
+
+	    /// <summary>
+	    /// 机构对象
+	    /// </summary>
+	    public OrgDto  Organize { get; set; }
+
+	    /// <summary>
+	    /// 机构对象
+	    /// </summary>
+	    public OrgDto CrOrganize { get; set; }
+	}
 }

+ 11 - 11
src/Hotline.Share/Dtos/Order/OrderSuperviseDto.cs

@@ -10,16 +10,6 @@ namespace Hotline.Share.Dtos.Order
 	public class OrderSuperviseDto
 	{
 
-		/// <summary>
-		/// 工单ID
-		/// </summary>
-		public string OrderId { get; set; }
-
-		/// <summary>
-		/// 被督办部门ID
-		/// </summary>
-		public string OrgId { get; set; }
-
 		/// <summary> 
 		/// 督办状态
 		/// </summary>
@@ -33,6 +23,16 @@ namespace Hotline.Share.Dtos.Order
 
 	public class ApplyOrderSuperviseDto : OrderSuperviseDto
 	{
+		/// <summary>
+		/// 工单ID
+		/// </summary>
+		public string OrderId { get; set; }
+
+		/// <summary>
+		/// 被督办部门ID
+		/// </summary>
+		public string OrgId { get; set; }
+
 		/// <summary>
 		/// 督办回复时限
 		/// </summary>
@@ -57,7 +57,7 @@ namespace Hotline.Share.Dtos.Order
 		/// <summary>
 		/// 回复人
 		/// </summary>
-		public string ReplyId { get; set; }
+		public string? ReplyId { get; set; }
 	}
 
 	public class SignOrderSuperviseDto 

+ 10 - 12
src/Hotline.Share/Dtos/Order/OrderUrgeDto.cs

@@ -9,21 +9,10 @@ namespace Hotline.Share.Dtos.Order
 {
 	public class OrderUrgeDto
 	{
-
-		/// <summary>
-		/// 工单ID
-		/// </summary>
-		public string OrderId { get; set; }
-
-		/// <summary>
-		/// 被督办部门ID
-		/// </summary>
-		public string OrgId { get; set; }
-
 		/// <summary> 
 		/// 督办状态
 		/// </summary>
-		public int state { get; set; }
+		public int? State { get; set; }
 
 		/// <summary>
 		/// 附件
@@ -33,6 +22,15 @@ namespace Hotline.Share.Dtos.Order
 
 	public class ApplyOrderUrgeDto : OrderUrgeDto
 	{
+		/// <summary>
+		/// 工单ID
+		/// </summary>
+		public string OrderId { get; set; }
+
+		/// <summary>
+		/// 被督办部门ID
+		/// </summary>
+		public string OrgId { get; set; }
 		/// <summary>
 		/// 督办回复时限
 		/// </summary>

+ 6 - 0
src/Hotline/Orders/OrderSupervise.cs

@@ -80,5 +80,11 @@ namespace Hotline.Orders {
 		/// </summary>
 		[Navigate(NavigateType.OneToOne, nameof(OrgId))]
 		public SystemOrganize? Organize { get; set; }
+
+		/// <summary>
+		/// 
+		/// </summary>
+		[Navigate(NavigateType.OneToOne, nameof(CreatorOrgId))]
+		public SystemOrganize? CrOrganize { get; set; }
 	}
 }

+ 6 - 0
src/Hotline/Orders/OrderUrge.cs

@@ -75,6 +75,12 @@ namespace Hotline.Orders {
 		[Navigate(NavigateType.OneToOne, nameof(OrgId))]
 		public SystemOrganize? Organize { get; set; }
 
+		/// <summary>
+		/// 
+		/// </summary>
+		[Navigate(NavigateType.OneToOne, nameof(CreatorOrgId))]
+		public SystemOrganize? CrOrganize { get; set; }
+
 	}
 }