Explorar o código

自贡任务 415 在回访列表增加【修改记录】功能等

tangjiang hai 1 mes
pai
achega
43789056c5

+ 43 - 1
src/Hotline.Api/Controllers/OrderController.cs

@@ -168,6 +168,7 @@ public class OrderController : BaseController
     private readonly IRepository<OrderComplement> _orderComplementRepository;
     private readonly ICircularRecordDomainService _circularRecordDomainService;
     private readonly IRepository<Hotline.Special.SpecialNumber> _specialNumberRepository;
+    private readonly IRepository<OrderVisitDetailCopy> _orderVisitDetailCopyRepository;
 
     public OrderController(
         IOrderDomainService orderDomainService,
@@ -244,7 +245,8 @@ public class OrderController : BaseController
         IRepository<SystemOrganize> systemOrganizeRepository,
         IRepository<OrderComplement> orderComplementRepository,
         ICircularRecordDomainService circularRecordDomainService,
-        IRepository<Hotline.Special.SpecialNumber> specialNumberRepository)
+        IRepository<Hotline.Special.SpecialNumber> specialNumberRepository,
+        IRepository<OrderVisitDetailCopy> orderVisitDetailCopyRepository)
     {
         _orderDomainService = orderDomainService;
         _orderRepository = orderRepository;
@@ -321,6 +323,7 @@ public class OrderController : BaseController
         _orderComplementRepository = orderComplementRepository;
         _circularRecordDomainService = circularRecordDomainService;
         _specialNumberRepository = specialNumberRepository;
+        _orderVisitDetailCopyRepository = orderVisitDetailCopyRepository;
     }
 
     #endregion
@@ -1080,6 +1083,45 @@ public class OrderController : BaseController
 
     #region 工单回访
 
+    /// <summary>
+    /// 获取修改历史记录
+    /// </summary>
+    /// <param name="id"></param>
+    /// <returns></returns>
+    [HttpGet("getordervisitdetailcopy/{id}")]
+    public async Task<OrderVisitDetailCopyDto> GetOrderVisitDetailCopy([FromQuery] string id)
+    {
+        var listCopyData = await _orderVisitDetailCopyRepository.Queryable()
+            .Where(p => p.VisitId == id)
+            .OrderByDescending(p => p.CreationTime)
+            .Take(1)
+            .ToListAsync();
+
+        var data = new OrderVisitDetailCopyDto();
+        if (listCopyData != null && listCopyData.Any())
+        {
+            //修改数据
+            var list = await _orderVisitDetailCopyRepository.Queryable().Where(p => p.BacthId == listCopyData[0].BacthId).ToListAsync();
+            var orderVisitDetailCopyDtos = new List<OrderVisitDetailDto>();
+            foreach (var item in list)
+            {
+                orderVisitDetailCopyDtos.Add(_mapper.Map<OrderVisitDetailDto>(item));
+            }
+            data.OrderVisitDetailCopyDtos = orderVisitDetailCopyDtos;
+
+            //正常数据
+            var listData = await _orderVisitedDetailRepository.Queryable().Where(p => p.VisitId == id).ToListAsync();
+            var orderVisitDetailDtos = new List<OrderVisitDetailDto>();
+            foreach (var item in orderVisitDetailDtos)
+            {
+                orderVisitDetailCopyDtos.Add(_mapper.Map<OrderVisitDetailDto>(item));
+            }
+            data.OrderVisitDetailDtos = orderVisitDetailDtos;
+        }
+
+        return data;
+    }
+
     /// <summary>
     /// 回访列表
     /// </summary>

+ 25 - 1
src/Hotline.Application/OrderApp/OrderApplication.cs

@@ -111,6 +111,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     private readonly ICircularRecordDomainService _circularRecordDomainService;
     private readonly ISessionContextManager _sessionContextManager;
     private readonly IOrderVisitApplication _orderVisitApplication;
+    private readonly IRepository<OrderVisitDetailCopy> _orderVisitDetailCopyRepository;
 
     public OrderApplication(
         IOrderDomainService orderDomainService,
@@ -162,7 +163,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         ISessionContextCreator sessionContextCreator,
         ISessionContextManager sessionContextManager,
         IOrderVisitApplication orderVisitApplication,
-        IRepository<Role> roleRepository
+        IRepository<Role> roleRepository,
+        IRepository<OrderVisitDetailCopy> orderVisitDetailCopyRepository
         )
     {
         _orderDomainService = orderDomainService;
@@ -214,6 +216,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         _sessionContextManager = sessionContextManager;
         _orderVisitApplication = orderVisitApplication;
         _roleRepository = roleRepository;
+        _orderVisitDetailCopyRepository = orderVisitDetailCopyRepository;
     }
 
     /// <summary>
@@ -1305,6 +1308,26 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         if (_appOptions.Value.IsYiBin && visit.VisitState == EVisitState.Visited)
             throw UserFriendlyException.SameMessage("已回访,不能重复回访");
 
+        //记录修改历史
+        try
+        {
+            if (dto.IsUpdate.HasValue && dto.IsUpdate == true)
+            {
+                if (visit.OrderVisitDetails != null && visit.OrderVisitDetails.Count > 0)
+                {
+                    var guid = Guid.NewGuid().ToString();
+                    var visitDetailsCopy = _mapper.Map<List<OrderVisitDetailCopy>>(visit.OrderVisitDetails);
+                    foreach (var item in visitDetailsCopy)
+                    {
+                        item.BacthId = guid;
+                    }
+                    await _orderVisitDetailCopyRepository.AddRangeAsync(visitDetailsCopy, cancellationToken);
+                }
+            }
+        }
+        catch (Exception)
+        { }
+
         var first = dto.VisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Org);
 
         visit.IsPutThrough = dto.IsPutThrough;
@@ -3621,6 +3644,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .WhereIF(!string.IsNullOrEmpty(dto.OrderTagCode),
                 d => SqlFunc.Subqueryable<OrderRelationTag>().InnerJoin<SystemDicData>((s, p) => s.TagId == p.Id)
                     .Where((s, p) => p.DicDataValue == dto.OrderTagCode && d.OrderId == s.OrderId).Any()) //工单标签
+            .WhereIF(dto.IsUpdate.HasValue, d => d.IsUpdate == dto.IsUpdate)
             .OrderByIF(_appOptions.Value.IsYiBin && dto.VisitStateQuery != EVisitStateQuery.Visited, d => d.Order.IsUrgent, OrderByType.Desc)
             .OrderByIF(_appOptions.Value.IsZiGong == false, d => d.PublishTime, OrderByType.Desc)
             //.OrderByDescending(d => d.PublishTime)

+ 56 - 16
src/Hotline.Share/Dtos/Order/OrderVisitDto.cs

@@ -102,25 +102,25 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public bool? IsOverTime { get; set; }
 
-		/// <summary>
-		/// 发布时间
-		/// </summary>
-		public DateTime? StartPublishTime { get; set; }
+        /// <summary>
+        /// 发布时间
+        /// </summary>
+        public DateTime? StartPublishTime { get; set; }
 
-		/// <summary>
-		/// 发布时间
-		/// </summary>
-		public DateTime? EndPublishTime { get; set; }
+        /// <summary>
+        /// 发布时间
+        /// </summary>
+        public DateTime? EndPublishTime { get; set; }
 
-		/// <summary>
-		/// 接办部门
-		/// </summary>
-		public string? ActualHandleOrgName { get;  set; }
+        /// <summary>
+        /// 接办部门
+        /// </summary>
+        public string? ActualHandleOrgName { get; set; }
 
-		/// <summary>
-		/// 一级部门
-		/// </summary>
-		public string? OrgLevelOneName { get; set; }
+        /// <summary>
+        /// 一级部门
+        /// </summary>
+        public string? OrgLevelOneName { get; set; }
 
         /// <summary>
         /// 来电主体
@@ -148,6 +148,11 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public string? OrderTagCode { get; set; }
 
+        /// <summary>
+        /// 是否回访结果修改
+        /// </summary>
+        public bool? IsUpdate { get; set; }
+
     }
 
     public record QueryOrderPublishStatisticsAllDto : PagedRequest
@@ -465,6 +470,11 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public bool? SeatJudge { get; set; }
 
+        /// <summary>
+        /// 是否回访结果修改
+        /// </summary>
+        public bool? IsUpdate { get; set; }
+
         public List<VisitDetailDto> VisitDetails { get; set; }
     }
 
@@ -860,6 +870,11 @@ namespace Hotline.Share.Dtos.Order
         public string? OrderTagCode { get; set; }
 
         public List<SystemDicDataOutDto>? OrderTags { get; set; }
+
+        /// <summary>
+        /// 是否回访结果修改
+        /// </summary>
+        public bool? IsUpdate { get; set; }
     }
 
     public class OrderVisitDetailDto
@@ -984,6 +999,15 @@ namespace Hotline.Share.Dtos.Order
 
         public bool? IsShowOperate { get; set; }
 
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        public DateTime CreationTime { get; set; }
+
+        /// <summary>
+        /// 创建人
+        /// </summary>
+        public string? CreatorName { get; set; }
     }
 
     /// <summary>
@@ -1218,4 +1242,20 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public DateTime PublishTime { get; set; }
     }
+
+    /// <summary>
+    /// 修改记录
+    /// </summary>
+    public class OrderVisitDetailCopyDto
+    {
+        /// <summary>
+        /// 回访信息
+        /// </summary>
+        public List<OrderVisitDetailDto> OrderVisitDetailDtos { get; set; }
+
+        /// <summary>
+        /// 修改记录
+        /// </summary>
+        public List<OrderVisitDetailDto> OrderVisitDetailCopyDtos { get; set; }
+    }
 }

+ 8 - 3
src/Hotline/Orders/OrderVisit.cs

@@ -117,7 +117,7 @@ public class OrderVisit : CreationEntity
     /// <summary>
     /// 智能回访次数
     /// </summary>
-    [SugarColumn( DefaultValue = "0" )]
+    [SugarColumn(DefaultValue = "0")]
     public int AiVisitCount { get; set; }
 
     /// <summary>
@@ -136,11 +136,11 @@ public class OrderVisit : CreationEntity
     /// <summary>
     /// 评判状态
     /// </summary>
-    public EJudgeState? JudgeState { get; set;}
+    public EJudgeState? JudgeState { get; set; }
     /// <summary>
     /// 评判意见
     /// </summary>
-    public string? JudgeContent { get; set;}
+    public string? JudgeContent { get; set; }
 
     /// <summary>
     /// 评判人Id
@@ -167,6 +167,11 @@ public class OrderVisit : CreationEntity
     /// </summary>
     public bool? IsBatchVisit { get; set; }
 
+    /// <summary>
+    /// 是否回访结果修改
+    /// </summary>
+    public bool? IsUpdate { get; set; }
+
     public void AiVisitTime()
     {
         LastVisitTime = DateTime.Now;

+ 19 - 0
src/Hotline/Orders/OrderVisitDetailCopy.cs

@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Orders
+{
+    /// <summary>
+    /// 回访历史记录
+    /// </summary>
+    public class OrderVisitDetailCopy : OrderVisitDetail
+    {
+        /// <summary>
+        ///批次Id
+        /// </summary>
+        public string BacthId { get; set; }
+    }
+}