Browse Source

网格员系统工单状态日志

qinchaoyue 1 month ago
parent
commit
7f5a5d2e6f

+ 26 - 0
src/Hotline.Api/Controllers/Snapshot/BiSnapshotController.cs

@@ -10,6 +10,10 @@ using Hotline.Share.Requests;
 using SqlSugar;
 using XF.Domain.Authentications;
 using Hotline.Settings;
+using Hotline.Caching.Interfaces;
+using Hotline.Share.Enums.Order;
+using Hotline.Share.Enums.Snapshot;
+using XF.Utility.EnumExtensions;
 
 namespace Hotline.Api.Controllers.Snapshot;
 
@@ -146,4 +150,26 @@ public class BiSnapshotController : BaseController
     [HttpGet("guider-work-statistics-detail")]
     public async Task<PagedDto<GuiderWorkStatisticsDetailsOutDto>> GetGuiderWorkStatisticsDetailsAsync([FromQuery] GuiderWorkStatisticsDetailsInDto dto)
         => (await _biSnapshotApplication.GetGuiderWorkStatisticsDetails(dto).ToPagedListAsync(dto)).ToPaged();
+
+    /// <summary>
+    /// 网格员系统工单状态日志基础数据
+    /// </summary>
+    /// <returns></returns>
+    [HttpGet("guider-work-log/basedata")]
+    public async Task<Dictionary<string, object>> GetGuiderWorkLogsAsyncBasedataAsync()
+    {
+        return new Dictionary<string, object>
+        {
+            { "orderStatus", EnumExts.GetDescriptions<EOrderStatus>()},
+        };
+    }
+
+    /// <summary>
+    /// 网格员系统工单状态日志
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    [HttpGet("guider-work-log")]
+    public async Task<PagedDto<GuiderWorkLogsOutDto>> GetGuiderWorkLogsAsync([FromQuery] GuiderWorkLogsInDto dto)
+        => (await _biSnapshotApplication.GetGuiderWorkLogs(dto).ToPagedListAsync(dto)).ToPaged();
 }

+ 17 - 0
src/Hotline.Application/Snapshot/BiSnapshotApplication.cs

@@ -482,4 +482,21 @@ public class BiSnapshotApplication : IBiSnapshotApplication, IScopeDependency
             });
         return query;
     }
+
+    public ISugarQueryable<GuiderWorkLogsOutDto> GetGuiderWorkLogs(GuiderWorkLogsInDto dto)
+    {
+        var query = _orderSnapshotRepository.Queryable()
+            .LeftJoin<Order>((snapshot, order) => order.Id == snapshot.Id)
+            .Where((snapshot, order) => snapshot.IsGuidSystemCallBack == true)
+            .WhereIF(dto.MemberMobile.NotNullOrEmpty(), snapshot => snapshot.MemberMobile.Contains(dto.MemberMobile))
+            .WhereIF(dto.BeginCreationTime != null && dto.EndCreationTime != null, snapshot => snapshot.CreationTime >= dto.BeginCreationTime && snapshot.CreationTime <= dto.EndCreationTime)
+            .WhereIF(dto.MemberName.NotNullOrEmpty(), snapshot => snapshot.MemberName.Contains( dto.MemberName))
+            .WhereIF(dto.No.NotNullOrEmpty(), (snapshot, order) => order.No.Contains(dto.No))
+            .WhereIF(dto.Title.NotNullOrEmpty(), (snapshot, order) => order.Title.Contains(dto.Title))
+            .WhereIF(dto.NetworkENumber.NotNullOrEmpty(), (snapshot, order) => snapshot.NetworkENumber.Contains(dto.NetworkENumber))
+            .WhereIF(dto.Status != null, (snapshot, order) => order.Status == dto.Status)
+            .OrderByDescending(snapshot => snapshot.CreationTime)
+            .Select(snapshot => new GuiderWorkLogsOutDto(), true);
+        return query;
+    }
 }

+ 7 - 0
src/Hotline.Application/Snapshot/IBiSnapshotApplication.cs

@@ -46,4 +46,11 @@ public interface IBiSnapshotApplication
 
     ISugarQueryable<GuiderWorkStatisticsDetailsOutDto> GetGuiderWorkStatisticsDetails(GuiderWorkStatisticsDetailsInDto dto);
     ISugarQueryable<HotspotDataStatisticsOutDto> GetHotspotDataStatisticsAsync(HotspotDataStatisticsInDto dto);
+
+    /// <summary>
+    /// 网格员系统工单状态日志
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    ISugarQueryable<GuiderWorkLogsOutDto> GetGuiderWorkLogs(GuiderWorkLogsInDto dto);
 }

+ 104 - 1
src/Hotline.Share/Dtos/Snapshot/StatisticsDto.cs

@@ -1,4 +1,5 @@
-using Hotline.Share.Enums.Order;
+using Hotline.Share.Dtos.Order;
+using Hotline.Share.Enums.Order;
 using Hotline.Share.Requests;
 using Hotline.Share.Tools;
 using Newtonsoft.Json;
@@ -1627,3 +1628,105 @@ public class HotspotDataStatisticsInDto
     [Required]
     public DateTime EndTime { get; set; }
 }
+
+public class GuiderWorkLogsOutDto
+{
+    /// <summary>
+    /// Id
+    /// </summary>
+    public string Id { get; set; }
+
+    /// <summary>
+    /// 受理编号
+    /// </summary>
+    public string No { get; set; }
+
+    /// <summary>
+    /// 信件状态
+    /// </summary>
+    public EOrderStatus Status { get; set; }
+
+    /// <summary>
+    /// 信件状态
+    /// </summary>
+    public string StatusTxt => Status.GetDescription();
+
+    /// <summary>
+    /// 受理时间
+    /// </summary>
+    public DateTime CreationTime { get; set; }
+
+    /// <summary>
+    /// 区域
+    /// </summary>
+    public string County { get; set; }
+
+    /// <summary>
+    /// 网格员回复内容
+    /// </summary>
+    public string? NetworkRemark { get; set; }
+
+    /// <summary>
+    /// 回复时间
+    /// </summary>
+    public DateTime? ReplyDate { get; set; }
+
+    /// <summary>
+    /// 网格员姓名
+    /// </summary>
+    public string? MemberName { get; set; }
+
+    /// <summary>
+    /// 网格员电话
+    /// </summary>
+    public string? MemberMobile { get; set; }
+
+    /// <summary>
+    /// 网格E通编号
+    /// </summary>
+    public string? NetworkENumber { get; set; }
+}
+
+public record GuiderWorkLogsInDto : PagedRequest
+{
+
+    /// <summary>
+    /// No
+    /// </summary>
+    public string? No { get; set; }
+
+    /// <summary>
+    /// 标题
+    /// </summary>
+    public string? Title { get; set; }
+
+    /// <summary>
+    /// 网格员姓名
+    /// </summary>
+    public string? MemberName { get; set; }
+
+    /// <summary>
+    /// 网格员电话
+    /// </summary>
+    public string? MemberMobile { get; set; }
+
+    /// <summary>
+    /// 编号
+    /// </summary>
+    public string? NetworkENumber { get; set; }
+
+    /// <summary>
+    /// 状态
+    /// </summary>
+    public EOrderStatus? Status { get; set; }
+
+    /// <summary>
+    /// 受理时间开始
+    /// </summary>
+    public DateTime? BeginCreationTime { get; set; }
+
+    /// <summary>
+    /// 受理时间结束
+    /// </summary>
+    public DateTime? EndCreationTime { get; set; }
+}