Эх сурвалжийг харах

新增已标注工单集合接口

qinchaoyue 3 сар өмнө
parent
commit
690d1a6d73

+ 8 - 0
src/Hotline.Api/Controllers/Snapshot/RedPackController.cs

@@ -188,6 +188,14 @@ public class RedPackController : BaseController
     public async Task<PagedDto<SnapshotRedPackRecordItemsGuiderOutDto>> GetRedPackRecordGuiderItemsAsync([FromQuery] SnapshotRedPackRecordItemsGuiderInDto dto)
         => (await _redPackApplication.GetRedPackRecordGuiderItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
 
+    /// <summary>
+    /// 红包发放明细
+    /// </summary>
+    /// <returns></returns>
+    [HttpGet("record/send")]
+    public async Task<PagedDto<SnapshotRedPackRecordSendOutDto>> GetRedPackRecordDetailAsync([FromQuery] SnapshotRedPackRecordSendInDto dto)
+        => (await _redPackApplication.GetRedPackRecordDetailAsync(dto).ToPagedListAsync(dto)).ToPaged();
+
     /// <summary>
     /// 批量发送红包
     /// </summary>

+ 9 - 0
src/Hotline.Api/Controllers/Snapshot/SnapshotOrderController.cs

@@ -116,6 +116,15 @@ public class SnapshotOrderController : BaseController
     public async Task<PagedDto<SignOrderSnapshotItemsOutDto>> GetSignOrderSnapshotItemsAsync([FromQuery] SignOrderSnapshotItemsInDto dto)
         => (await _orderSnapshotApplication.GetSignOrderSnapshotItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
 
+    /// <summary>
+    /// 获取工单已经标记集合
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    [HttpGet("signed")]
+    public async Task<PagedDto<SignedOrderSnapshotItemsOutDto>> GetSignedOrderSnapshotItemsAsync([FromQuery] SignedOrderSnapshotItemsInDto dto)
+        => (await _orderSnapshotApplication.GetSignedOrderSnapshotItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
+
     /// <summary>
     /// 标记详情
     /// </summary>

+ 4 - 0
src/Hotline.Application.Tests/Application/OrderSnapshotApplicationTest.cs

@@ -39,6 +39,7 @@ public class OrderSnapshotApplicationTest : TestBase
     /// <summary>
     /// 随手拍办理流程
     /// 工单标注 : 验证数据是否保存正确
+    /// 获取已标注集合: 验证是否有已标注的数据
     /// </summary>
     /// <returns></returns>
     [Fact]
@@ -67,6 +68,9 @@ public class OrderSnapshotApplicationTest : TestBase
         var labelLog = await _orderSnapshotApplication.GetSignOrderSnapshotLogItemsAsync(new SignOrderSnapshotLogItemsInDto()).ToPagedListAsync(new PagedRequest());
         labelLog.Items.Any(m => m.Title.IsNullOrEmpty()).ShouldBe(false);
         labelLog.Items.Any(m => m.SourceChannel.IsNullOrEmpty()).ShouldBe(false);
+
+        var sigedItems = await _orderSnapshotApplication.GetSignedOrderSnapshotItemsAsync(new SignedOrderSnapshotItemsInDto()).ToListAsync();
+        sigedItems.Any(m => m.OrderId == order.Id).ShouldBe(true);
     }
 }
 

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

@@ -110,4 +110,11 @@ public interface IOrderSnapshotApplication
     /// <param name="dto"></param>
     /// <returns></returns>
     ISugarQueryable<OrderSnapshotItemsOutDto> GetOrderSnapshotItemsAsync(OrderSnapshotItemsInDto dto);
+
+    /// <summary>
+    /// 获取工单已经标记集合
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    ISugarQueryable<SignedOrderSnapshotItemsOutDto> GetSignedOrderSnapshotItemsAsync(SignedOrderSnapshotItemsInDto dto);
 }

+ 6 - 0
src/Hotline.Application/Snapshot/IRedPackApplication.cs

@@ -64,6 +64,12 @@ public interface IRedPackApplication
     /// <returns></returns>
     ISugarQueryable<SnapshotOrderGuiderAuditItemsOutDto> GetRedPackGuiderAuditItemsAsync(SnapshotOrderGuiderAuditItemsInDto dto);
 
+    /// <summary>
+    /// 红包发放明细
+    /// </summary>
+    /// <returns></returns>
+    ISugarQueryable<SnapshotRedPackRecordSendOutDto> GetRedPackRecordDetailAsync(SnapshotRedPackRecordSendInDto dto);
+
     /// <summary>
     /// 网格员红包发放记录
     /// </summary>

+ 33 - 0
src/Hotline.Application/Snapshot/OrderSnapshotApplication.cs

@@ -422,6 +422,9 @@ public class OrderSnapshotApplication : IOrderSnapshotApplication, IScopeDepende
     {
         var query = _orderSnapshotRepository.Queryable()
             .LeftJoin<Order>((snapshot, order) => snapshot.Id == order.Id)
+            .WhereIF(dto.No.NotNullOrEmpty(), (snapshot, order) => order.No.Contains(dto.No))
+            .WhereIF(dto.Title.NotNullOrEmpty(), (snapshot, order) => order.Title.Contains(dto.Title))
+            .WhereIF(dto.ActualHandleOrgName.NotNullOrEmpty(), (snapshot, order) => order.ActualHandleOrgName.Contains(dto.ActualHandleOrgName))
             .Select((snapshot, order) => new OrderSnapshotItemsOutDto 
             {
                 CreationTime = order.CreationTime
@@ -429,4 +432,34 @@ public class OrderSnapshotApplication : IOrderSnapshotApplication, IScopeDepende
              , true);
         return query;
     }
+
+    /// <summary>
+    /// 获取工单已经标记集合
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    public ISugarQueryable<SignedOrderSnapshotItemsOutDto> GetSignedOrderSnapshotItemsAsync(SignedOrderSnapshotItemsInDto dto)
+    {
+        var query = _orderSnapshotRepository.Queryable()
+            .LeftJoin<Order>((snapshot, order) => order.Id == snapshot.Id)
+            .Where((snapshot, order) => order.Status >= EOrderStatus.Published)
+            .WhereIF(dto.No.NotNullOrEmpty(), (snapshot, order) => order.No.Contains(dto.No))
+            .WhereIF(dto.Title.NotNullOrEmpty(), (snapshot, order) => order.Title.Contains(dto.Title))
+            .WhereIF(dto.FromName.NotNullOrEmpty(), (snapshot, order) => order.FromName.Contains(dto.FromName))
+            .WhereIF(dto.FromPhone.NotNullOrEmpty(), (snapshot, order) => order.FromPhone.Contains(dto.FromPhone))
+            .WhereIF(dto.Label.NotNullOrEmpty(), (snapshot, order) => snapshot.LabelName.Contains(dto.Label))
+            .WhereIF(dto.BeginSignTime.HasValue && dto.EndSignTime.HasValue, (snapshot, order) => snapshot.SignTime >= dto.BeginSignTime && snapshot.SignTime <= dto.EndSignTime)
+            .OrderByDescending((snapshot, order) => snapshot.CreationTime)
+            .Select((snapshot, order) => new SignedOrderSnapshotItemsOutDto
+            { 
+                LabelName = snapshot.LabelName,
+                OrderId = order.Id,
+                SignTime = snapshot.SignTime,
+                SignUserName = snapshot.SignUserName,
+                SourceChannel = order.SourceChannel,
+            }, true);
+
+        return query;
+    }
+
 }

+ 5 - 0
src/Hotline.Application/Snapshot/RedPackApplication.cs

@@ -464,6 +464,11 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
         return query;
     }
 
+    public ISugarQueryable<SnapshotRedPackRecordSendOutDto> GetRedPackRecordDetailAsync(SnapshotRedPackRecordSendInDto dto)
+    {
+        throw new NotImplementedException();
+    }
+
 
     #endregion
 }

+ 107 - 0
src/Hotline.Share/Dtos/Snapshot/OrderDto.cs

@@ -981,6 +981,113 @@ public class GuiderReplyItemsOutDto
     public string? NetworkENumber { get; set; }
 }
 
+public record SignedOrderSnapshotItemsInDto : PagedRequest
+{
+    /// <summary>
+    /// 受理编号
+    /// </summary>
+    public string? No { get; set; }
+
+    /// <summary>
+    /// 标题
+    /// </summary>
+    public string? Title { get; set; }
+
+    /// <summary>
+    /// 来电人
+    /// </summary>
+    public string? FromName { get; set; }
+
+    /// <summary>
+    /// 来电人电话
+    /// </summary>
+    public string? FromPhone { get; set; }
+
+    /// <summary>
+    /// 标注类型
+    /// </summary>
+    public string? Label { get; set; }
+
+    /// <summary>
+    /// 标注开始时间
+    /// </summary>
+    public DateTime? BeginSignTime { get; set; }
+
+    /// <summary>
+    /// 标注结束时间
+    /// </summary>
+    public DateTime? EndSignTime { get; set; }
+}
+
+
+public class SignedOrderSnapshotItemsOutDto
+{
+    /// <summary>
+    /// Id
+    /// </summary>
+    public string OrderId { get; set; }
+
+    /// <summary>
+    /// 受理编号
+    /// </summary>
+    public string No { get; set; }
+
+    /// <summary>
+    /// 信件状态
+    /// </summary>
+    public EOrderStatus Status { get; set; }
+
+    /// <summary>
+    /// 来源
+    /// </summary>
+    public string SourceChannel { get; set; }
+
+    /// <summary>
+    /// 标题
+    /// </summary>
+    public string Title { get; set; }
+
+    /// <summary>
+    /// 来电人姓名
+    /// </summary>
+    public string FromName { get; set; }
+
+    /// <summary>
+    /// 来电人电话
+    /// </summary>
+    public string FromPhone { get; set; }
+
+    /// <summary>
+    /// 区域
+    /// </summary>
+    public string County { get; set; }
+
+    /// <summary>
+    /// 行业
+    /// </summary>
+    public string IndustryName { get; set; }
+
+    /// <summary>
+    /// 受理时间
+    /// </summary>
+    public DateTime CreationTime { get; set; }
+
+    /// <summary>
+    /// 标注人
+    /// </summary>
+    public string? SignUserName { get; set; }
+
+    /// <summary>
+    /// 标注类型
+    /// </summary>
+    public string LabelName { get; set; }
+
+    /// <summary>
+    /// 标记时间
+    /// </summary>
+    public DateTime? SignTime { get; set; }
+}
+
 public record SignOrderSnapshotItemsInDto : PagedRequest
 {
     /// <summary>

+ 51 - 0
src/Hotline.Share/Dtos/Snapshot/RedPackRecordDto.cs

@@ -12,6 +12,57 @@ internal class RedPackRecordDto
 {
 }
 
+public class SnapshotRedPackRecordSendOutDto
+{ }
+
+public record SnapshotRedPackRecordSendInDto : PagedRequest
+{
+    /// <summary>
+    /// 状态;
+    /// 0: 全部;
+    /// 1: 已领取;
+    /// 2: 已退款;
+    /// 3: 发放失败;
+    /// 4: 待领取;
+    /// </summary>
+    public int Status { get; set; }
+
+    /// <summary>
+    /// 行业
+    /// </summary>
+    public string? IndustryId { get; set; }
+
+    /// <summary>
+    /// 编号
+    /// </summary>
+    public string? No { get; set; }
+
+    /// <summary>
+    /// 发放用户类型
+    /// </summary>
+    public EReadPackUserType? UserType { get; set; }
+
+    /// <summary>
+    /// 用户OpenId
+    /// </summary>
+    public string? OpenId { get; set; }
+
+    /// <summary>
+    /// 发送状态
+    /// </summary>
+    public EReadPackSendStatus? SendStatus { get; set; }
+
+    /// <summary>
+    /// 是否领取
+    /// </summary>
+    public bool? IsReceive { get; set; }
+
+    /// <summary>
+    /// 是否补领
+    /// </summary>
+    public bool? IsReplace { get; set; }
+}
+
 public record SnapshotRedPackRecordItemsGuiderInDto : SnapshotRedPackRecordItemsInDto
 {
     /// <summary>