admin vor 1 Jahr
Ursprung
Commit
5e4c07aa7d

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

@@ -47,7 +47,7 @@ public class OrderController : BaseController
     private readonly IMapper _mapper;
     private readonly IMediator _mediator;
     private readonly IOrderPublishedRepository _orderPublishedRepository;
-
+    private readonly IOrderVisitedRepository _orderVisitedRepository;
 
     public OrderController(
         IOrderDomainService orderDomainService,
@@ -62,7 +62,8 @@ public class OrderController : BaseController
         ISessionContext sessionContext,
         IMapper mapper,
         IMediator mediator,
-        IOrderPublishedRepository orderPublishedRepository)
+        IOrderPublishedRepository orderPublishedRepository,
+        IOrderVisitedRepository orderVisitedRepository)
     {
         _orderDomainService = orderDomainService;
         _orderRepository = orderRepository;
@@ -77,8 +78,11 @@ public class OrderController : BaseController
         _mapper = mapper;
         _mediator = mediator;
         _orderPublishedRepository = orderPublishedRepository;
+        _orderVisitedRepository = orderVisitedRepository;
     }
 
+    #region 工单发布
+
     /// <summary>
     /// 查询(工单发布)
     /// </summary>
@@ -91,19 +95,20 @@ public class OrderController : BaseController
         var (total, items) = await _orderRepository.Queryable()
             .Includes(d => d.OrderPublished)
             .Includes(d => d.Employee)
-            .Where(x=>x.Status == EOrderStatus.Filed)
+            .Where(x => x.Status == EOrderStatus.Filed)
             .WhereIF(!string.IsNullOrEmpty(dto.OrderTitle), d => d.Title.Contains(dto.OrderTitle!))
             .WhereIF(dto.PubState == EPubState.Pub, d => d.Progress == EProgress.Published || d.Progress == EProgress.Visited)
             .WhereIF(dto.PubState == EPubState.NoPub, d => d.Progress == EProgress.Managing)
             .WhereIF(!string.IsNullOrEmpty(dto.PubMan), d => d.Employee.Name.Contains(dto.PubMan!) || d.Employee.StaffNo.Contains(dto.PubMan!))
-            .WhereIF(dto.PubRange != null, d => d.OrderPublished.PublishState == dto.PubRange)
+            .WhereIF(dto.PubRange == EPublicState.Pub, d => d.OrderPublished.PublishState)
+            .WhereIF(dto.PubRange == EPublicState.NoPub, d=>!d.OrderPublished.PublishState)
             .WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptType))
             .WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.HotspotId))
             .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart)
             .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd)
             .WhereIF(dto.FiledTimeStart.HasValue, d => d.OrderPublished.CreationTime >= dto.CreationTimeStart)
             .WhereIF(dto.FiledTimeEnd.HasValue, d => d.OrderPublished.CreationTime <= dto.CreationTimeEnd)
-            .OrderByDescending(d => d.CreationTime)
+            .OrderBy(d => d.CreationTime)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
 
         return new PagedDto<PublishDto>(total, _mapper.Map<IReadOnlyList<PublishDto>>(items));
@@ -183,12 +188,50 @@ public class OrderController : BaseController
             throw UserFriendlyException.SameMessage("未知工单,无法发布");
 
         var res = new PublishOrderPageBaseDto() { SourceChannel = order.SourceChannel, OrderTitle = order.Title, Content = order.Content, ActualOpinion = order.ActualOpinion };
-        var (idName,idNames)  = await _workflowDomainService.GetNoVisiteOrgsAsync(order.WorkflowId, HttpContext.RequestAborted);
+        var (idName, idNames) = await _workflowDomainService.GetNoVisiteOrgsAsync(order.WorkflowId, HttpContext.RequestAborted);
         res.ActualHandleOrgName = idName;
         res.idNames = idNames.ToList();
         return res;
     }
 
+
+    #endregion
+
+    #region 工单回访
+
+    /// <summary>
+    /// 回访列表
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    [Permission(EPermission.QueryOrderVisitList)]
+    [HttpGet("order-visit-list")]
+    public async Task<PagedDto<OrderVisited>> QueryOrderVisitList([FromQuery]QueryOrderVisitDto dto)
+    {
+        var (total,items) = await _orderVisitedRepository.Queryable()
+            .Includes(x=>x.Order)
+            .Includes(x=>x.Employee)
+            .WhereIF(dto.VisitState == EVisitState.NoVisit, x => x.VisitedState == EVisitedState.WaitForVisit || x.VisitedState == EVisitedState.NoSatisfiedWaitForVisit)
+            .WhereIF(dto.VisitState == EVisitState.Visited, x=> x.VisitedState == EVisitedState.Visited)
+            .OrderBy(x => x.CreationTime)
+            .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+        return new PagedDto<OrderVisited>(total, _mapper.Map<IReadOnlyList<OrderVisited>>(items));
+    }
+
+    /// <summary>
+    /// 回访详情
+    /// </summary>
+    /// <returns></returns>
+    [Permission(EPermission.VisitInfo)]
+    [HttpGet("visit-entity/{id}")]
+    public async Task VisitInfo(string id)
+    {
+
+    }
+
+
+    #endregion
+
     /// <summary>
     /// 工单列表
     /// </summary>

+ 3 - 4
src/Hotline.Api/Controllers/TestController.cs

@@ -101,15 +101,14 @@ public class TestController : BaseController
     }
 
     [HttpGet("time")]
-    public async Task<string> GetTime()
+    public async Task GetTime()
     {
-        //var rsp = await _wexClient.QueryTelsAsync(new QueryTelRequest { StaffNo = "10086" }, HttpContext.RequestAborted);
+        var rsp = await _wexClient.QueryTelsAsync(new QueryTelRequest {  }, HttpContext.RequestAborted);
 
         //return DateTime.Now.ToString("F");
 
-        var rsp = await _daprClient.InvokeMethodAsync<ApiResponse<string>>(HttpMethod.Get, "identity", "api/v1/Test/time", HttpContext.RequestAborted);
+        //var rsp = await _daprClient.InvokeMethodAsync<ApiResponse<string>>(HttpMethod.Get, "identity", "api/v1/Test/time", HttpContext.RequestAborted);
         //var rsp1 = await _daprClient.InvokeMethodAsync<int, ApiResponse<string>>(HttpMethod.Post, "identity", "api/v1/Test/time1", 222, HttpContext.RequestAborted);
-        return rsp.Result;
     }
 
     [HttpGet("pgsql")]

+ 1 - 1
src/Hotline.Api/config/appsettings.Development.json

@@ -12,7 +12,7 @@
     "Wex": {
       "Address": "http://222.212.82.225:8083",
       "Username": "admin",
-      "Password": "123456"
+      "Password": "Wex@12345"
     }
   },
   "ConnectionStrings": {

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

@@ -336,6 +336,7 @@ namespace Hotline.Share.Dtos.Order
         public string ArrangeContent { get; set; }
     }
 
+
     public class PublishOrderPageBaseDto
     {
         /// <summary>

+ 49 - 1
src/Hotline.Share/Dtos/Order/QueryOrderDto.cs

@@ -100,7 +100,7 @@ namespace Hotline.Share.Dtos.Order
         /// <summary>
         /// 发布范围
         /// </summary>
-        public bool? PubRange { get; set; }
+        public EPublicState PubRange { get; set; }
 
         /// <summary>
         /// 受理类型
@@ -126,6 +126,54 @@ namespace Hotline.Share.Dtos.Order
 
     }
 
+    public record QueryOrderVisitDto: PagedRequest
+    {
+        public EVisitState VisitState { get; set; }
+    }
+
+
+    public enum EVisitState
+    {
+        /// <summary>
+        /// 全部
+        /// </summary>
+        [Description("全部")]
+        All = 0,
+
+        /// <summary>
+        /// 已回访
+        /// </summary>
+        [Description("已回访")]
+        Visited = 1,
+
+        /// <summary>
+        /// 未回访
+        /// </summary>
+        [Description("未回访")]
+        NoVisit =2,
+    }
+
+
+    public enum EPublicState
+    {
+        /// <summary>
+        /// 全部
+        /// </summary>
+        [Description("全部")]
+        All = 0,
+        /// <summary>
+        /// 公开
+        /// </summary>
+        [Description("公开")]
+        Pub = 1,
+        /// <summary>
+        /// 不公开
+        /// </summary>
+        [Description("不公开")]
+        NoPub = 2,
+    }
+
+
     public enum EPubState
     {
         /// <summary>

+ 17 - 1
src/Hotline/Permissions/EPermission.cs

@@ -850,7 +850,7 @@ namespace Hotline.Permissions
         #endregion
 
 
-        #region 发布管理
+        #region 工单发布管理
         /// <summary>
         /// 发布管理列表
         /// </summary>
@@ -870,6 +870,22 @@ namespace Hotline.Permissions
         PublishOrder= 500202,
         #endregion
 
+
+        #region 工单回访管理
+
+        /// <summary>
+        /// 回访列表
+        /// </summary>
+        [Display(GroupName = "OrderVisit",Name = "回访列表",Description = "回访列表")]
+        QueryOrderVisitList = 500300,
+
+        /// <summary>
+        /// 回访详情
+        /// </summary>
+        [Display(GroupName = "OrderVisit",Name ="回访详情",Description ="回访详情")]
+        VisitInfo = 500301,
+        #endregion
+
         #endregion
 
         #region 公用(999)