admin 1 год назад
Родитель
Сommit
7fae3fd022

+ 18 - 2
src/Hotline.Api/Controllers/OrderController.cs

@@ -151,6 +151,7 @@ public class OrderController : BaseController
             orgDetail.VisitId = id;
             orgDetail.VisitOrgCode = item.Id;
             orgDetail.VisitOrgName = item.Name;
+            orgDetail.VisitTarget = EVisitTarget.Org;
             visitedDetail.Add(orgDetail);
         }
         await _mediator.Publish(new AddVisitNotify(visitedDetail), HttpContext.RequestAborted);
@@ -234,8 +235,11 @@ public class OrderController : BaseController
         }
 
         int count =await _orderVisitedRepository.CountAsync(x => x.OrderId == orderVisit.OrderId && x.VisitState == Share.Enums.Order.EVisitState.Visited,HttpContext.RequestAborted);
+        var visitSatisfaction = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.VisitSatisfaction);
+        var dissatisfiedReason = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.DissatisfiedReason);
+        var visitManner = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.VisitManner);
 
-        return new { OrderVisitModel = orderVisit ,Count = count };
+        return new { OrderVisitModel = orderVisit ,Count = count , VisitSatisfaction = visitSatisfaction, DissatisfiedReason= dissatisfiedReason, VisitManner= visitManner };
     }
 
     /// <summary>
@@ -252,6 +256,7 @@ public class OrderController : BaseController
             .WhereIF(dto.VisitState == Share.Dtos.Order.EVisitState.Visited, x=>x.OrderVisit.VisitState == Share.Enums.Order.EVisitState.Visited)
             .OrderByDescending(x => x.CreationTime)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+
         return new PagedDto<OrderVisitDetail>(total, _mapper.Map<IReadOnlyList<OrderVisitDetail>>(items));
     }
 
@@ -267,7 +272,18 @@ public class OrderController : BaseController
         var visit = await _orderVisitedRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
         if (visit is null)
             throw UserFriendlyException.SameMessage("未知回访信息");
-        // TODO
+
+        //更新主表
+        visit.VisitState = Share.Enums.Order.EVisitState.Visited;
+        visit.VisitTime = DateTime.Now;
+        visit.IsPutThrough = dto.IsPutThrough;
+        visit.EmployeeId = _sessionContext.UserId;
+        await _orderVisitedRepository.UpdateAsync(visit,HttpContext.RequestAborted);
+
+        //更新明細
+        var visitDetails = _mapper.Map <List<OrderVisitDetail>>(dto.VisitDetails);
+
+        await _orderVisitedDetailRepository.UpdateRangeAsync(visitDetails, HttpContext.RequestAborted);
     }
 
     #endregion

+ 5 - 0
src/Hotline.Share/Dtos/Order/QueryOrderDto.cs

@@ -144,6 +144,11 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public string Id { get; set; }
 
+        /// <summary>
+        /// 是否接通
+        /// </summary>
+        public bool IsPutThrough { get; set; }
+
         public List<VisitDetailDto> VisitDetails { get; set; }
     }
 

+ 3 - 3
src/Hotline/Orders/OrderVisitDetail.cs

@@ -32,19 +32,19 @@ namespace Hotline.Orders
         /// 部门办件结果
         /// </summary>
         [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
-        public IdName OrgProcessingResults { get; set; }
+        public IdName? OrgProcessingResults { get; set; }
 
         /// <summary>
         /// 不满意原因
         /// </summary>
         [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
-        public IdName OrgNoSatisfiedReason { get; set; }
+        public List<IdName>? OrgNoSatisfiedReason { get; set; }
 
         /// <summary>
         /// 部门办件态度
         /// </summary>
         [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
-        public IdName OrgHandledAttitude { get; set; }
+        public IdName? OrgHandledAttitude { get; set; }
 
         /// <summary>
         /// 回访内容

+ 15 - 0
src/Hotline/Settings/SysDicTypeConsts.cs

@@ -104,4 +104,19 @@ public class SysDicTypeConsts
     /// 投诉举报目标
     /// </summary>
     public const string AffairTarget = "AffairTarget";
+
+    /// <summary>
+    /// 回访满意度
+    /// </summary>
+    public const string VisitSatisfaction = "VisitSatisfaction";
+
+    /// <summary>
+    /// 不满意原因
+    /// </summary>
+    public const string DissatisfiedReason = "DissatisfiedReason";
+
+    /// <summary>
+    /// 回访态度
+    /// </summary>
+    public const string VisitManner = "VisitManner";
 }