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

Merge branch 'feature/snapshot' into dev

qinchaoyue 2 сар өмнө
parent
commit
03c7af5bad

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

@@ -71,6 +71,15 @@ public class SnapshotOrderController : BaseController
     public async Task<PagedDto<OrderSnapshotItemsOutDto>> GetOrderSnapshotItems([FromQuery] OrderSnapshotItemsInDto dto)
     public async Task<PagedDto<OrderSnapshotItemsOutDto>> GetOrderSnapshotItems([FromQuery] OrderSnapshotItemsInDto dto)
         => (await _orderSnapshotApplication.GetOrderSnapshotItems(dto).ToPagedListAsync(dto)).ToPaged();
         => (await _orderSnapshotApplication.GetOrderSnapshotItems(dto).ToPagedListAsync(dto)).ToPaged();
 
 
+    /// <summary>
+    /// 电气焊作业申报工单集合
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    [HttpGet("order/electrogas")]
+    public async Task<PagedDto<OrderSnapshotElectrogasItemsOutDto>> GetOrderSnapshotElectrogasItems([FromQuery] OrderSnapshotItemsInDto dto)
+        => (await _orderSnapshotApplication.GetOrderSnapshotElectrogasItems(dto).ToPagedListAsync(dto)).ToPaged();
+
     /// <summary>
     /// <summary>
     /// 随手拍所有工单页面基础信息
     /// 随手拍所有工单页面基础信息
     /// </summary>
     /// </summary>

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

@@ -113,6 +113,13 @@ public interface IOrderSnapshotApplication
     /// <returns></returns>
     /// <returns></returns>
     ISugarQueryable<OrderSnapshotItemsOutDto> GetOrderSnapshotItems(OrderSnapshotItemsInDto dto);
     ISugarQueryable<OrderSnapshotItemsOutDto> GetOrderSnapshotItems(OrderSnapshotItemsInDto dto);
 
 
+    /// <summary>
+    /// 电气焊作业申请工单集合
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    ISugarQueryable<OrderSnapshotElectrogasItemsOutDto> GetOrderSnapshotElectrogasItems(OrderSnapshotItemsInDto dto);
+
     /// <summary>
     /// <summary>
     /// 获取工单已经标签集合
     /// 获取工单已经标签集合
     /// </summary>
     /// </summary>

+ 38 - 1
src/Hotline.Application/Snapshot/SnapshotOrderApplication.cs

@@ -459,7 +459,6 @@ public class SnapshotOrderApplication : IOrderSnapshotApplication, IScopeDepende
             .WhereIF(dto.OrgLevelOneCode.NotNullOrEmpty(), (snapshot, order) => order.OrgLevelOneCode == dto.OrgLevelOneCode)
             .WhereIF(dto.OrgLevelOneCode.NotNullOrEmpty(), (snapshot, order) => order.OrgLevelOneCode == dto.OrgLevelOneCode)
             //.WhereIF(dto.DiscontentTurnTo.HasValue, (snapshot, order) => order == dto.OrgLevelOneCode)
             //.WhereIF(dto.DiscontentTurnTo.HasValue, (snapshot, order) => order == dto.OrgLevelOneCode)
             .WhereIF(dto.IndustryId.NotNullOrEmpty(), (snapshot, order) => snapshot.IndustryId == dto.IndustryId)
             .WhereIF(dto.IndustryId.NotNullOrEmpty(), (snapshot, order) => snapshot.IndustryId == dto.IndustryId)
-            .WhereIF(dto.IsElectric.HasValue, (snapshot, order, industry) => industry.IndustryType == EIndustryType.Declare)
             .Select((snapshot, order, industry) => new OrderSnapshotItemsOutDto
             .Select((snapshot, order, industry) => new OrderSnapshotItemsOutDto
             {
             {
                 CreationTime = order.CreationTime
                 CreationTime = order.CreationTime
@@ -468,6 +467,44 @@ public class SnapshotOrderApplication : IOrderSnapshotApplication, IScopeDepende
         return query;
         return query;
     }
     }
 
 
+    [ExportExcel("电气焊作业申报工单")]
+    public ISugarQueryable<OrderSnapshotElectrogasItemsOutDto> GetOrderSnapshotElectrogasItems(OrderSnapshotItemsInDto dto)
+    {
+        var query = _orderSnapshotRepository.Queryable()
+            .LeftJoin<Order>((snapshot, order) => snapshot.Id == order.Id)
+            .LeftJoin<Industry>((snapshot, order, industry) => snapshot.IndustryId == industry.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))
+            .WhereIF(dto.AcceptType.NotNullOrEmpty(), (snapshot, order) => order.AcceptType == dto.AcceptType)
+            .WhereIF(dto.AcceptorName.NotNullOrEmpty(), (snapshot, order) => order.AcceptorName == dto.AcceptorName)
+            .WhereIF(dto.FromPhone.NotNullOrEmpty(), (snapshot, order) => order.FromPhone == dto.FromPhone)
+            .WhereIF(dto.FromName.NotNullOrEmpty(), (snapshot, order) => order.FromName == dto.FromName)
+            .WhereIF(dto.BeginExpiredTime.HasValue && dto.EndExpiredTime.HasValue, (snapshot, order) => order.ExpiredTime >= dto.BeginExpiredTime && order.ExpiredTime <= dto.EndExpiredTime)
+            .WhereIF(dto.BeginCreationTime.HasValue && dto.EndCreationTime.HasValue, (snapshot, order) => order.CreationTime >= dto.BeginCreationTime && order.CreationTime <= dto.EndCreationTime)
+            .WhereIF(dto.Status.HasValue, (snapshot, order) => order.Status == dto.Status)
+            .WhereIF(dto.County.NotNullOrEmpty(), (snapshot, order) => order.County == dto.County)
+            .WhereIF(dto.IsScreen.HasValue && dto.IsScreen == true, (snapshot, order) => order.OrderScreens.Count() > 0)
+            .WhereIF(dto.IsScreen.HasValue && dto.IsScreen == false, (snapshot, order) => order.OrderScreens.Count() == 0)
+            .WhereIF(dto.CurrentStepName.NotNullOrEmpty(), (snapshot, order) => order.CurrentStepName == dto.CurrentStepName)
+            .WhereIF(dto.BeginFiledTime.HasValue && dto.EndFiledTime.HasValue, (snapshot, order) => order.FiledTime >= dto.BeginFiledTime && order.FiledTime <= dto.EndFiledTime)
+            .WhereIF(dto.HotspotName.NotNullOrEmpty(), (snapshot, order) => order.HotspotName.Contains(dto.HotspotName))
+            .WhereIF(dto.OrderTagCode.NotNullOrEmpty(), (snapshot, order) => order.OrderTagCode.Contains(dto.OrderTagCode))
+            .WhereIF(dto.IsUrgent.HasValue, (snapshot, order) => order.IsUrgent == dto.IsUrgent)
+            .WhereIF(dto.TransferPhone.NotNullOrEmpty(), (snapshot, order) => order.TransferPhone.Contains(dto.TransferPhone))
+            .WhereIF(dto.OrgLevelOneCode.NotNullOrEmpty(), (snapshot, order) => order.OrgLevelOneCode == dto.OrgLevelOneCode)
+            //.WhereIF(dto.DiscontentTurnTo.HasValue, (snapshot, order) => order == dto.OrgLevelOneCode)
+            .WhereIF(dto.IndustryId.NotNullOrEmpty(), (snapshot, order) => snapshot.IndustryId == dto.IndustryId)
+            .Where((snapshot, order, industry) => industry.IndustryType == EIndustryType.Declare)
+            .Select((snapshot, order, industry) => new OrderSnapshotElectrogasItemsOutDto
+            {
+                CreationTime = order.CreationTime
+            }
+             , true);
+        return query;
+    }
+
+
     /// <summary>
     /// <summary>
     /// 获取工单已经标记集合
     /// 获取工单已经标记集合
     /// </summary>
     /// </summary>

+ 231 - 5
src/Hotline.Share/Dtos/Snapshot/OrderDto.cs

@@ -1943,6 +1943,11 @@ public record OrderSnapshotItemsInDto : PagedRequest
     /// </summary>
     /// </summary>
     public string? OrgLevelOneCode { get; set; }
     public string? OrgLevelOneCode { get; set; }
 
 
+    /// <summary>
+    /// 一级部门名称
+    /// </summary>
+    public string? OrgLevelOneName { get; set; }
+
     /// <summary>
     /// <summary>
     /// 不满意转办
     /// 不满意转办
     /// </summary>
     /// </summary>
@@ -1952,11 +1957,6 @@ public record OrderSnapshotItemsInDto : PagedRequest
     /// 行业
     /// 行业
     /// </summary>
     /// </summary>
     public string? IndustryId { get; set; }
     public string? IndustryId { get; set; }
-
-    /// <summary>
-    /// 是否电气焊工单
-    /// </summary>
-    public bool? IsElectric { get; set; }
 }
 }
 
 
 public class OrderSnapshotItemsOutDto
 public class OrderSnapshotItemsOutDto
@@ -2130,6 +2130,232 @@ public class OrderSnapshotItemsOutDto
     public string FileOpinion { get; set; }
     public string FileOpinion { get; set; }
 }
 }
 
 
+public class OrderSnapshotElectrogasItemsOutDto
+{
+    /// <summary>
+    /// Id
+    /// </summary>
+    public string Id { get; set; }
+
+    /// <summary>
+    /// 过期状态
+    /// </summary>
+    public EExpiredStatus ExpiredStatus { get; set; }
+
+    /// <summary>
+    /// 过期状态
+    /// </summary>
+    public string ExpiredStatusText => ExpiredStatus.GetDescription();
+
+    /// <summary>
+    /// 受理编号
+    /// </summary>
+    public string No { get; set; }
+
+    /// <summary>
+    /// 信件状态
+    /// </summary>
+    public EOrderStatus Status { get; set; }
+
+    /// <summary>
+    /// 信件状态
+    /// </summary>
+    public string StatusTxt => Status.GetDescription();
+
+    /// <summary>
+    /// 来源
+    /// </summary>
+    public string SourceChannel { get; set; }
+
+    /// <summary>
+    /// 当前节点
+    /// </summary>
+    public string CurrentStepName { get; set; }
+
+    /// <summary>
+    /// 重办次数
+    /// </summary>
+    public int ReTransactNum { get; set; }
+
+    /// <summary>
+    /// 是否紧急
+    /// </summary>
+    public bool IsUrgent { get; set; }
+
+    /// <summary>
+    /// 是否紧急
+    /// </summary>
+    public string IsUrgentTxt => IsUrgent ? "紧急" : "-";
+
+    /// <summary>
+    /// 期满时间
+    /// </summary>
+    public DateTime? ExpiredTime { get; set; }
+
+    /// <summary>
+    /// 是否超期
+    /// </summary>
+    public bool IsExpired
+    {
+        get
+        {
+            if (ExpiredTime.HasValue)
+                return DateTime.Now > ExpiredTime.Value;
+            return false;
+        }
+    }
+
+    /// <summary>
+    /// 受理时间
+    /// </summary>
+    public DateTime CreationTime { 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 int? JobType { get; set; }
+
+    /// <summary>
+    /// 作业类型
+    /// </summary>
+    public string? JobTypeName { get; set; }
+
+    /// <summary>
+    /// 作业场所
+    /// </summary>
+    public string? Workplace { get; set; }
+
+    /// <summary>
+    /// 作业区域
+    /// </summary>
+    public string? WorkArea { get; set; }
+
+    /// <summary>
+    /// 作业时间
+    /// </summary>
+    public DateTime? StartWorkTime { get; set; }
+
+    /// <summary>
+    /// 作业结束时间
+    /// </summary>
+    public DateTime? EndWorkTime { get; set; }
+
+    /// <summary>
+    /// 作业地点
+    /// </summary>
+    public string? Address { get; set; }
+
+    /// <summary>
+    /// 行业
+    /// </summary>
+    public string IndustryName { get; set; }
+
+    /// <summary>
+    /// 办理时长
+    /// </summary>
+    public double CreationTimeHandleDuration { get; set; }
+
+    /// <summary>
+    /// 区域
+    /// </summary>
+    public string County { get; set; }
+
+    /// <summary>
+    /// 电话
+    /// </summary>
+    public string Contact { get; set; }
+
+    /// <summary>
+    /// 一级部门
+    /// </summary>
+    public string OrgLevelOneCode { get; set; }
+
+    /// <summary>
+    /// 一级部门名称
+    /// </summary>
+    public string? OrgLevelOneName { get; set; }
+
+    /// <summary>
+    /// 接办部门
+    /// </summary>
+    public string ActualHandleOrgName { get; set; }
+
+    /// <summary>
+    /// 接办时间
+    /// </summary>
+    public DateTime? StartTime { get; set; }
+
+    /// <summary>
+    /// 办结时间
+    /// </summary>
+    public DateTime? FiledTime { get; set; }
+
+    /// <summary>
+    /// 受理类型
+    /// </summary>
+    public string AcceptType { get; set; }
+
+    /// <summary>
+    /// 热点类型
+    /// </summary>
+    public string HotspotName { get; set; }
+
+    /// <summary>
+    /// 核实方式
+    /// </summary>
+    public string? VerifyType { get; set; }
+
+    /// <summary>
+    /// 是否按清单检查
+    /// </summary>
+    public bool? IsCheckList { get; set; }
+
+    /// <summary>
+    /// 是否按清单检查
+    /// </summary>
+    public string? IsCheckListTxt => IsCheckList.HasValue && IsCheckList.Value ? "是" : "否";
+
+    /// <summary>
+    /// 是否重复
+    /// </summary>
+    public bool? IsRepetition { get; set; }
+
+    /// <summary>
+    /// 是否重复
+    /// </summary>
+    public string? IsRepetitionTxt => IsRepetition.HasValue && IsRepetition.Value ? "是" : "否";
+
+    /// <summary>
+    /// 受理人
+    /// </summary>
+    public string AcceptorName { get; set; }
+
+    /// <summary>
+    /// 受理内容
+    /// </summary>
+    public string Content { get; set; }
+
+    /// <summary>
+    /// 办理结果
+    /// </summary>
+    public string FileOpinion { get; set; }
+}
+
 public class NameCodeDto
 public class NameCodeDto
 {
 {
     /// <summary>
     /// <summary>

+ 8 - 0
test/Hotline.Tests/Application/OrderSnapshotApplicationTest.cs

@@ -219,5 +219,13 @@ public class OrderSnapshotApplicationTest : TestBase
         var sigedItems = await _orderSnapshotApplication.GetLabeledOrderSnapshotItems(new LabeledOrderSnapshotItemsInDto()).ToListAsync();
         var sigedItems = await _orderSnapshotApplication.GetLabeledOrderSnapshotItems(new LabeledOrderSnapshotItemsInDto()).ToListAsync();
         sigedItems.Any(m => m.OrderId == order.Id).ShouldBe(true);
         sigedItems.Any(m => m.OrderId == order.Id).ShouldBe(true);
     }
     }
+
+    [Fact]
+    public async Task GetOrderSnapshotElectrogasItems_Test()
+    {
+        var inDto = new OrderSnapshotItemsInDto();
+        var items = (await _orderSnapshotApplication.GetOrderSnapshotElectrogasItems(inDto).ToPagedListAsync(inDto));
+        items.Total.ShouldNotBe(0);
+    }
 }
 }