Ver código fonte

新增省延期、省甄别、省退回

tangjiang 9 meses atrás
pai
commit
49125c421e

+ 155 - 0
src/Hotline.Api/Controllers/ProvinceStatisticsController.cs

@@ -0,0 +1,155 @@
+using Hotline.Orders;
+using Hotline.Repository.SqlSugar.Extensions;
+using Hotline.Share.Dtos;
+using Hotline.Share.Dtos.Order;
+using Hotline.Share.Dtos.ProvinceStatistics;
+using Hotline.Share.Enums.Order;
+using MapsterMapper;
+using Microsoft.AspNetCore.Mvc;
+using XF.Domain.Authentications;
+using XF.Domain.Exceptions;
+using XF.Domain.Repository;
+
+namespace Hotline.Api.Controllers
+{
+    public class ProvinceStatisticsController : BaseController
+    {
+        private readonly IMapper _mapper;
+        private readonly ISessionContext _sessionContext;
+        private readonly IRepository<OrderSendBack> _orderSendBackRepository;
+        private readonly IRepository<OrderDelay> _orderDelayRepository;
+        private readonly IRepository<OrderScreen> _orderScreenRepository;
+
+
+        public ProvinceStatisticsController(IMapper mapper,
+           ISessionContext sessionContext,
+            IRepository<OrderSendBack> orderSendBackRepository,
+            IRepository<OrderDelay> orderDelayRepository,
+            IRepository<OrderScreen> orderScreenRepository)
+        {
+            _mapper = mapper;
+            _sessionContext = sessionContext;
+            _orderSendBackRepository = orderSendBackRepository;
+            _orderDelayRepository = orderDelayRepository;
+            _orderScreenRepository = orderScreenRepository;
+        }
+
+        /// <summary>
+        /// 省退单查询
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("get_province_send_back_list")]
+        public async Task<PagedDto<ProvinceSendBackListDto>> GetProvinceSendBackList([FromQuery] QueryProvinceSendBackDto dto)
+        {
+            var (total, items) = await _orderSendBackRepository.Queryable()
+                           .Includes(p => p.Order)
+                           .Where(p => p.Destination == ESendBackDestination.Province && p.State == dto.State)
+                           .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.Order.No == dto.No)
+                           .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Order.Title == dto.Title)
+                           .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), p => p.Order.ProvinceNo == dto.ProvinceNo)
+                           .WhereIF(!string.IsNullOrEmpty(dto.ApplyUserName), p => p.CreatorName == dto.ApplyUserName)
+                           .WhereIF(dto.ApplyStartTime.HasValue, p => p.CreationTime >= dto.ApplyStartTime.Value)
+                           .WhereIF(dto.ApplyStartTime.HasValue, p => p.CreationTime <= dto.ApplyStartTime.Value)
+                           .OrderByDescending(x => x.CreationTime)
+                           .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+
+            return new PagedDto<ProvinceSendBackListDto>(total, _mapper.Map<IReadOnlyList<ProvinceSendBackListDto>>(items));
+        }
+
+        /// <summary>
+        /// 获取退回详情
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpGet("get_order_send_back_detail")]
+        public async Task<OrderSendBack> GetOrderSendBackDetail(string id)
+        {
+            var data = await _orderSendBackRepository.GetAsync(p => p.Id == id, HttpContext.RequestAborted);
+            if (data == null)
+                throw UserFriendlyException.SameMessage("退回查询失败");
+            return data;
+        }
+
+        /// <summary>
+        /// 省延期查询
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("get_province_order_delay_list")]
+        public async Task<PagedDto<ProvinceOrderDelayListDto>> GetProvinceOrderDelayList([FromQuery] QueryProvinceSendBackDto dto)
+        {
+            var (total, items) = await _orderDelayRepository.Queryable()
+                           .Includes(p => p.Order)
+                           .Where(p => p.IsProDelay == true && (int)p.DelayState == dto.State)
+                           .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.Order.No == dto.No)
+                           .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Order.Title == dto.Title)
+                           .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), p => p.Order.ProvinceNo == dto.ProvinceNo)
+                           .WhereIF(!string.IsNullOrEmpty(dto.ApplyUserName), p => p.EmployeeName == dto.ApplyUserName)
+                           .WhereIF(dto.ApplyStartTime.HasValue, p => p.ApplyDelayTime >= dto.ApplyStartTime.Value)
+                           .WhereIF(dto.ApplyStartTime.HasValue, p => p.ApplyDelayTime <= dto.ApplyStartTime.Value)
+                           .OrderByDescending(x => x.ApplyDelayTime)
+                           .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+
+            return new PagedDto<ProvinceOrderDelayListDto>(total, _mapper.Map<IReadOnlyList<ProvinceOrderDelayListDto>>(items));
+        }
+
+        /// <summary>
+        /// 获取延期详情
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpGet("get_order_delay_detail")]
+        public async Task<OrderDelay> GetOrderDelayDetail(string id)
+        {
+            var data = await _orderDelayRepository.GetAsync(p => p.Id == id, HttpContext.RequestAborted);
+            if (data == null)
+                throw UserFriendlyException.SameMessage("延期查询失败");
+            return data;
+        }
+
+        /// <summary>
+        /// 省甄别查询
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("get_province_order_screen_list")]
+        public async Task<PagedDto<ProvinceOrderScreenListDto>> GetProvinceOrderScreenList([FromQuery] QueryProvinceSendBackDto dto)
+        {
+            dto.State = dto.State switch
+            {
+                0 => 1,
+                1 => 2,
+                2 => 3,
+                _ => 1,
+            };
+            var (total, items) = await _orderScreenRepository.Queryable()
+                           .Includes(p => p.Order)
+                           .Where(p => p.IsProScreen == true && (int)p.Status == dto.State)
+                          .WhereIF(!string.IsNullOrEmpty(dto.No), p => p.Order.No == dto.No)
+                           .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Order.Title == dto.Title)
+                           .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), p => p.Order.ProvinceNo == dto.ProvinceNo)
+                           .WhereIF(!string.IsNullOrEmpty(dto.ApplyUserName), p => p.CreatorName == dto.ApplyUserName)
+                           .WhereIF(dto.ApplyStartTime.HasValue, p => p.CreationTime >= dto.ApplyStartTime.Value)
+                           .WhereIF(dto.ApplyStartTime.HasValue, p => p.CreationTime <= dto.ApplyStartTime.Value)
+                           .OrderByDescending(x => x.CreationTime)
+                           .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+
+            return new PagedDto<ProvinceOrderScreenListDto>(total, _mapper.Map<IReadOnlyList<ProvinceOrderScreenListDto>>(items));
+        }
+
+        /// <summary>
+        /// 获取甄别详情
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpGet("get_order_screen_detail")]
+        public async Task<OrderScreen> GetOrderScreenDetail(string id)
+        {
+            var data = await _orderScreenRepository.GetAsync(p => p.Id == id, HttpContext.RequestAborted);
+            if (data == null)
+                throw UserFriendlyException.SameMessage("甄别查询失败");
+            return data;
+        }
+    }
+}

+ 3 - 0
src/Hotline.Application/Handlers/FlowEngine/WorkflowNextHandler.cs

@@ -236,6 +236,9 @@ public class WorkflowNextHandler : INotificationHandler<NextStepNotify>
                 {
                     screen.Status = EScreenStatus.Approval;
                     screen.Flowed(workflow.FlowedUserIds, workflow.FlowedOrgIds, workflow.HandlerUsers, workflow.HandlerOrgs);
+                    //如果下个节点是省审批,则修改为省甄别
+                    if (nextTag is not null && nextTag.Type == TagDefaults.TagType.Org && nextTag.Value == TagDefaults.TagValue.Province)
+                        screen.IsProScreen = true;
                     await _orderScreenRepository.UpdateAsync(screen, cancellationToken);
                 }
 

+ 27 - 7
src/Hotline.Application/Subscribers/DatasharingSubscriber.cs

@@ -126,6 +126,14 @@ namespace Hotline.Application.Subscribers
             {
                 sendBack.Result = dto.Result;
                 sendBack.Reason = dto.Reason;
+                sendBack.AuditName = dto.AuditName;
+                sendBack.AuditOrgName = dto.AuditOrgName;
+                sendBack.AuditTime = dto.AuditTime;
+                if (dto.Result == 0)
+                    sendBack.State = 2;
+                else if (dto.Result == 1)
+                    sendBack.State = 1;
+
                 if (dto.Files != null && dto.Files.Any())
                 {
                     sendBack.FileJson = await _fileRepository.AddFileAsync(dto.Files, sendBack.Id, string.Empty, cancellationToken);
@@ -180,7 +188,7 @@ namespace Hotline.Application.Subscribers
                 }
                 await _orderSendBackRepository.UpdateAsync(sendBack, cancellationToken);
             }
-            
+
         }
 
         /// <summary>
@@ -355,6 +363,10 @@ namespace Hotline.Application.Subscribers
             //    }
             //}
             orderScreen.ReplyContent = dto.ProvinceScreenResult.AuditOpinion;
+            orderScreen.AuditName = dto.ProvinceScreenResult.AuditPerson;
+            orderScreen.AuditOrgName = dto.ProvinceScreenResult.AuditOuname;
+            orderScreen.AuditTime = dto.ProvinceScreenResult.AuditTime;
+
             if (dto.Files.Any())
                 orderScreen.FileJson =
                     await _fileRepository.AddFileAsync(dto.Files, orderScreen.Id, "", cancellationToken);
@@ -490,13 +502,21 @@ namespace Hotline.Application.Subscribers
                 //查询延期
                 var orderDelay = await _orderDelayRepository
                     .GetAsync(x => x.OrderId == order.Id && x.DelayState == EDelayState.Examining, cancellationToken);
-                if (dto.Files != null && dto.Files.Any())
-                    orderDelay.FileJson = await _fileRepository.AddFileAsync(dto.Files, orderDelay.Id, orderDelay.WorkflowId, cancellationToken);
-                await _orderDelayRepository.UpdateAsync(orderDelay, cancellationToken);
+                if (orderDelay != null)
+                {
+                    orderDelay.AuditName = dto.AuditName;
+                    orderDelay.AuditOrgName = dto.AuditOrgName;
+                    orderDelay.AuditTime = dto.AuditTime;
+                    orderDelay.AuditOpinion = dto.Opinion;
 
-                var current = SessionContextCreator.CreateSessionContext(dto.Source);
-                await _workflowApplication.HandleToEndAsync(current, orderDelay.WorkflowId, dto.Opinion, dto.Files,
-                    dto.IsPass ? EReviewResult.Approval : EReviewResult.Failed, cancellationToken);
+                    if (dto.Files != null && dto.Files.Any())
+                        orderDelay.FileJson = await _fileRepository.AddFileAsync(dto.Files, orderDelay.Id, orderDelay.WorkflowId, cancellationToken);
+                    await _orderDelayRepository.UpdateAsync(orderDelay, cancellationToken);
+
+                    var current = SessionContextCreator.CreateSessionContext(dto.Source);
+                    await _workflowApplication.HandleToEndAsync(current, orderDelay.WorkflowId, dto.Opinion, dto.Files,
+                        dto.IsPass ? EReviewResult.Approval : EReviewResult.Failed, cancellationToken);
+                }
             }
         }
 

+ 18 - 0
src/Hotline.Share/Dtos/DataSharing/PusherHotlineDto/OrderSendBackResultDto.cs

@@ -16,5 +16,23 @@ public class OrderSendBackResultDto : DsSource
     /// </summary>
     public string? Reason { get; set; }
 
+    /// <summary>
+    /// 审核人
+    /// </summary>
+    public string? AuditName { get; set; }
+
+    /// <summary>
+    /// 审核部门
+    /// </summary>
+    public string? AuditOrgName { get; set; }
+
+    /// <summary>
+    /// 审核时间
+    /// </summary>
+    public DateTime? AuditTime { get; set; }
+
+    /// <summary>
+    /// 附件
+    /// </summary>
     public List<FileDto> Files { get; set; }
 }

+ 15 - 0
src/Hotline.Share/Dtos/DataSharing/PusherHotlineDto/ProvinceSendDelayResultDto.cs

@@ -21,6 +21,21 @@ namespace Hotline.Share.Dtos.DataSharing.PusherHotlineDto
         /// </summary>
         public string Opinion { get; set; }
 
+        /// <summary>
+        /// 审核人
+        /// </summary>
+        public string? AuditName { get; set; }
+
+        /// <summary>
+        /// 审核部门
+        /// </summary>
+        public string? AuditOrgName { get; set; }
+
+        /// <summary>
+        /// 审核时间
+        /// </summary>
+        public DateTime? AuditTime { get; set; }
+
         public List<FileDto> Files { get; set; }
     }
 }

+ 148 - 0
src/Hotline.Share/Dtos/ProvinceStatistics/OrderBaseDto.cs

@@ -0,0 +1,148 @@
+using Hotline.Share.Enums.Order;
+using XF.Utility.EnumExtensions;
+
+namespace Hotline.Share.Dtos.ProvinceStatistics
+{
+    public class OrderBaseDto
+    {
+        public string OrderId { get; set; }
+
+        /// <summary>
+        /// 工单状态
+        /// </summary>
+        public EOrderStatus Status { get; set; }
+        public string StatusText => Status.GetDescription();
+
+        /// <summary>
+        /// 过期状态
+        /// </summary>
+        public EExpiredStatus? ExpiredStatus => CalculateExpiredState();
+
+        /// <summary>
+        /// 过期状态
+        /// </summary>
+        public string ExpiredStatusText => ExpiredStatus?.GetDescription() ?? string.Empty;
+
+        /// <summary>
+        /// 工单编码(20220101000001)
+        /// </summary>
+        public string No { get; set; }
+
+        /// <summary>
+        /// 来源渠道
+        /// </summary>
+        public string? SourceChannel { get; set; }
+        public string? SourceChannelCode { get; set; }
+
+        /// <summary>
+        /// 受理类型
+        /// </summary>
+        public string? AcceptType { get; set; }
+        public string? AcceptTypeCode { get; set; }
+
+        /// <summary>
+        /// 标题
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 热点
+        /// </summary>
+        public string? HotspotId { get; set; }
+        public string? HotspotName { get; set; }
+        public string? HotspotSpliceName { get; set; }
+
+        public DateTime CreationTime { get; set; }
+
+        /// <summary>
+        /// 省编号
+        /// </summary>
+        public string? ProvinceNo { get; set; }
+
+        /// <summary>
+        /// 过期时间
+        /// </summary>
+        public DateTime? ExpiredTime { get; set; }
+
+        /// <summary>
+        /// 即将超期时间
+        /// </summary>
+        public DateTime? NearlyExpiredTime { get; set; }
+
+        /// <summary>
+        /// 即将超期第一级
+        /// </summary>
+        public DateTime? NearlyExpiredTimeOne { get; set; }
+
+        /// <summary>
+        /// 实际办理节点名称(会签状态此字段保存最外层会签发起节点名称)
+        /// </summary>
+        public string? ActualHandleStepName { get; set; }
+
+        /// <summary>
+        /// 是否紧急
+        /// </summary>
+        public bool IsUrgent { get; set; }
+
+        public string IsUrgentText => IsUrgent ? "紧急" : "";
+
+        /// <summary>
+        /// 实际办理时间
+        /// </summary>
+        public DateTime? ActualHandleTime { get; set; }
+
+        /// <summary>
+        /// 实际办理人id
+        /// </summary>
+        public string? ActualHandlerId { get; set; }
+
+        /// <summary>
+        /// 实际办理人名称
+        /// </summary>
+        public string? ActualHandlerName { get; set; }
+
+        /// <summary>
+        /// 实际办理部门名称
+        /// </summary>
+        public string? ActualHandleOrgName { get; set; }
+
+        /// <summary>
+        /// 实际办理部门编码
+        /// </summary>
+        public string? ActualHandleOrgCode { get; set; }
+
+        public EExpiredStatus? CalculateExpiredState()
+        {
+            DateTime? dateTime = DateTime.Now;
+            if (Status >= EOrderStatus.Filed)
+            {
+                dateTime = ActualHandleTime;
+            }
+            //ExpiredStatus
+            if (ExpiredTime.HasValue)
+            {
+                if (NearlyExpiredTimeOne.HasValue && dateTime < NearlyExpiredTimeOne)
+                {
+                    return EExpiredStatus.Normal;
+                }
+                else if (!NearlyExpiredTimeOne.HasValue && dateTime < NearlyExpiredTime)
+                {
+                    return EExpiredStatus.Normal;
+                }
+                else if (NearlyExpiredTimeOne.HasValue && dateTime > NearlyExpiredTimeOne && dateTime < NearlyExpiredTime)
+                {
+                    return EExpiredStatus.GoingToExpiredOne;
+                }
+                else if (dateTime > NearlyExpiredTime && dateTime < ExpiredTime)
+                {
+                    return EExpiredStatus.GoingToExpired;
+                }
+                else
+                {
+                    return EExpiredStatus.Expired;
+                }
+            }
+            return null;
+        }
+    }
+}

+ 240 - 0
src/Hotline.Share/Dtos/ProvinceStatistics/ProvinceSendBackListDto.cs

@@ -0,0 +1,240 @@
+using Hotline.Share.Dtos.Order;
+using Hotline.Share.Enums.Order;
+using Hotline.Share.Enums.Settings;
+using XF.Utility.EnumExtensions;
+
+namespace Hotline.Share.Dtos.ProvinceStatistics
+{
+    /// <summary>
+    /// 退回
+    /// </summary>
+    public class ProvinceSendBackListDto
+    {
+        /// <summary>
+        /// 业务Id
+        /// </summary>
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 申请人
+        /// </summary>
+        public string? CreatorName { get; set; }
+
+        /// <summary>
+        /// 申请部门
+        /// </summary>
+        public string? CreatorOrgName { get; set; }
+
+        /// <summary>
+        /// 申请时间
+        /// </summary>
+        public DateTime CreationTime { get; set; }
+
+        /// <summary>
+        /// 申请原因
+        /// </summary>
+        public string? Content { get; set; }
+
+        /// <summary>
+        /// 审核人
+        /// </summary>
+        public string? AuditName { get; set; }
+
+        /// <summary>
+        /// 审核部门
+        /// </summary>
+        public string? AuditOrgName { get; set; }
+
+        /// <summary>
+        /// 审核时间
+        /// </summary>
+        public DateTime? AuditTime { get; set; }
+
+        /// <summary>
+        /// 审核意见
+        /// </summary>
+        public string? AuditOpinion { get; set; }
+
+        /// <summary>
+		/// 工单
+		/// </summary>
+		public OrderDto Order { get; set; }
+
+        /// <summary>
+        ///  审核结果  0  待审核  1 审核通过  2 审核不通过
+        /// </summary>
+        public int State { get; set; }
+
+        public string StateText => CalcRate(State);
+
+        public string CalcRate(int state)
+        {
+            if (state == 1)
+                return "同意";
+            else if (state == 2)
+                return "不同意";
+            else
+                return "申请中";
+        }
+    }
+
+    /// <summary>
+    /// 延期
+    /// </summary>
+    public class ProvinceOrderDelayListDto
+    {
+        /// <summary>
+        /// 业务Id
+        /// </summary>
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 工单ID
+        /// </summary>
+        public string OrderId { get; set; }
+
+        /// <summary>
+        /// 工单
+        /// </summary>
+        public OrderDto Order { get; set; }
+
+        /// <summary>
+        /// 延期申请时间
+        /// </summary>
+        public DateTime ApplyDelayTime { get; set; }
+
+        /// <summary>
+        /// 申请部门Code
+        /// </summary>
+        public string ApplyOrgCode { get; set; }
+
+        /// <summary>
+        /// 申请部门名称
+        /// </summary>
+        public string ApplyOrgName { get; set; }
+
+        /// <summary>
+        /// 申请人
+        /// </summary>
+        public string EmployeeId { get; set; }
+
+        /// <summary>
+        /// 申请人名称
+        /// </summary>
+        public string? EmployeeName { get; set; }
+
+        /// <summary>
+        /// 延期申请时限
+        /// </summary>
+        public int DelayNum { get; set; }
+
+        /// <summary>
+        /// 延期申请单位
+        /// </summary>
+        public ETimeType DelayUnit { get; set; }
+        public string? DelayUnitText => DelayUnit.GetDescription();
+
+        /// <summary>
+        /// 延期申请理由
+        /// </summary>
+        public string DelayReason { get; set; }
+
+        /// <summary>
+        /// 审核人
+        /// </summary>
+        public string? AuditName { get; set; }
+
+        /// <summary>
+        /// 审核部门
+        /// </summary>
+        public string? AuditOrgName { get; set; }
+
+        /// <summary>
+        /// 审核时间
+        /// </summary>
+        public DateTime? AuditTime { get; set; }
+
+        /// <summary>
+        /// 审核意见
+        /// </summary>
+        public string? AuditOpinion { get; set; }
+
+        /// <summary>
+        /// 审批状态
+        /// </summary>
+        public EDelayState DelayState { get; set; }
+
+        public string? DelayStateText => DelayState.GetDescription();
+
+    }
+
+    /// <summary>
+    /// 甄别
+    /// </summary>
+    public class ProvinceOrderScreenListDto
+    {
+        /// <summary>
+        /// 业务Id
+        /// </summary>
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 工单ID
+        /// </summary>
+        public string OrderId { get; set; }
+
+        /// <summary>
+        /// 工单
+        /// </summary>
+        public OrderDto Order { get; set; }
+
+        /// <summary>
+        /// 申请人
+        /// </summary>
+        public string? CreatorName { get; set; }
+
+        /// <summary>
+        /// 申请部门
+        /// </summary>
+        public string? CreatorOrgName { get; set; }
+
+        /// <summary>
+        /// 申请时间
+        /// </summary>
+        public DateTime CreationTime { get; set; }
+
+        /// <summary>
+        /// 甄别申请原因
+        /// </summary>
+        public string? Content { get; set; }
+
+
+        /// <summary>
+        /// 审核人
+        /// </summary>
+        public string? AuditName { get; set; }
+
+        /// <summary>
+        /// 审核部门
+        /// </summary>
+        public string? AuditOrgName { get; set; }
+
+        /// <summary>
+        /// 审核时间
+        /// </summary>
+        public DateTime? AuditTime { get; set; }
+
+        /// <summary>
+        /// 审核内容
+        /// </summary>
+        public string? ReplyContent { get; set; }
+
+        /// <summary>
+        /// 甄别申请状态
+        /// </summary>
+        public EScreenStatus Status { get; set; }
+
+        public string? StatusText => Status.GetDescription();
+
+    }
+}

+ 42 - 0
src/Hotline.Share/Dtos/ProvinceStatistics/QueryProvinceSendBackDto.cs

@@ -0,0 +1,42 @@
+using Hotline.Share.Requests;
+
+namespace Hotline.Share.Dtos.ProvinceStatistics
+{
+    public record QueryProvinceSendBackDto : PagedRequest
+    {
+        /// <summary>
+        /// 本地编号
+        /// </summary>
+        public string? No { get; set; }
+
+        /// <summary>
+        /// 标题
+        /// </summary>
+        public string? Title { get; set; }
+
+        /// <summary>
+        /// 省编号
+        /// </summary>
+        public string? ProvinceNo { get; set; }
+
+        /// <summary>
+        /// 申请人
+        /// </summary>
+        public string ApplyUserName { get; set; }
+
+        /// <summary>
+        /// 申请时间
+        /// </summary>
+        public DateTime? ApplyStartTime { get; set; }
+
+        /// <summary>
+        /// 申请时间
+        /// </summary>
+        public DateTime? ApplyEndTime { get; set; }
+
+        /// <summary>
+        ///  审核结果  0  待审核  1 审核通过  2 审核不通过
+        /// </summary>
+        public int State { get; set; } = 0;
+    }
+}

+ 4 - 0
src/Hotline/Hotline.csproj

@@ -22,4 +22,8 @@
     <ProjectReference Include="..\XF.Domain.Repository\XF.Domain.Repository.csproj" />
   </ItemGroup>
 
+  <ItemGroup>
+    <Folder Include="Province\" />
+  </ItemGroup>
+
 </Project>

+ 23 - 0
src/Hotline/Orders/OrderDelay.cs

@@ -92,6 +92,29 @@ namespace Hotline.Orders
         /// </summary>
         public EDelayState DelayState { get; set; }
 
+        #region 用于省平台查询
+        /// <summary>
+        /// 审核人
+        /// </summary>
+        public string? AuditName { get; set; }
+
+        /// <summary>
+        /// 审核部门
+        /// </summary>
+        public string? AuditOrgName { get; set; }
+
+        /// <summary>
+        /// 审核时间
+        /// </summary>
+        public DateTime? AuditTime { get; set; }
+
+        /// <summary>
+        /// 审核意见
+        /// </summary>
+        [SugarColumn(ColumnDescription = "审核意见", ColumnDataType = "varchar(2000)")]
+        public string? AuditOpinion { get; set; } 
+        #endregion
+
         /// <summary>
         /// 审批类型
         /// </summary>

+ 24 - 0
src/Hotline/Orders/OrderScreen.cs

@@ -78,6 +78,30 @@ namespace Hotline.Orders
         [SugarColumn(ColumnDescription = "甄别申请回复", ColumnDataType = "varchar(2000)")]
         public string? ReplyContent { get; set; }
 
+        #region 用于省平台查询
+        /// <summary>
+        /// 审核人
+        /// </summary>
+        public string? AuditName { get; set; }
+
+        /// <summary>
+        /// 审核部门
+        /// </summary>
+        public string? AuditOrgName { get; set; }
+
+        /// <summary>
+        /// 审核时间
+        /// </summary>
+        public DateTime? AuditTime { get; set; }
+
+        /// <summary>
+        /// 是否省甄别
+        /// </summary>
+        [SugarColumn(DefaultValue = "f")]
+        public bool IsProScreen { get; set; }
+
+        #endregion
+
 
         /// <summary>
         /// 甄别截至申请时间

+ 54 - 55
src/Hotline/Orders/OrderSendback.cs

@@ -1,13 +1,7 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Hotline.File;
-using Hotline.Share.Dtos.File;
+using Hotline.Share.Dtos.File;
 using Hotline.Share.Enums.Order;
 using SqlSugar;
+using System.ComponentModel;
 using XF.Domain.Repository;
 
 namespace Hotline.Orders
@@ -17,64 +11,69 @@ namespace Hotline.Orders
     /// </summary>
 	[Description("工单退回")]
     public class OrderSendBack : FullStateEntity
-	{
+    {
         public string OrderId { get; set; }
 
-		/// <summary>
-		/// 默认操作类型 服务工单退回 0
-		/// </summary>
-		public int Handle { get; set; } = 0;
+        /// <summary>
+        /// 默认操作类型 服务工单退回 0
+        /// </summary>
+        public int Handle { get; set; } = 0;
+
+        /// <summary>
+        /// 申请原因
+        /// </summary>
+        [SugarColumn(ColumnDescription = "申请原因", ColumnDataType = "varchar(2000)")]
+        public string? Content { get; set; }
 
-		/// <summary>
-		/// 申请原因
-		/// </summary>
-		[SugarColumn(ColumnDescription = "申请原因", ColumnDataType = "varchar(2000)")]
-		public string? Content { get; set; }
+        /// <summary>
+        /// 省上退回反馈结果
+        /// </summary>
+        public int? Result { get; set; }
 
-		/// <summary>
-		/// 省上退回反馈结果
-		/// </summary>
-		public int? Result {  get; set; }
+        /// <summary>
+        /// 省上退回反馈
+        /// </summary>
+        [SugarColumn(ColumnDescription = "退回反馈", ColumnDataType = "varchar(2000)")]
+        public string? Reason { get; set; }
 
-		/// <summary>
-		/// 省上退回反馈
-		/// </summary>
-		[SugarColumn(ColumnDescription = "退回反馈", ColumnDataType = "varchar(2000)")]
-		public string? Reason { get; set; }
+        /// <summary>
+        /// 审核人
+        /// </summary>
+        public string? AuditName { get; set; }
 
-		/// <summary>
-		/// 审核人
-		/// </summary>
-		public string? AuditName { get; set; }
+        /// <summary>
+        /// 审核部门
+        /// </summary>
+        public string? AuditOrgName { get; set; }
 
-		/// <summary>
-		/// 审核时间
-		/// </summary>
-		public DateTime? AuditTime { get; set; }
+        /// <summary>
+        /// 审核时间
+        /// </summary>
+        public DateTime? AuditTime { get; set; }
 
-		/// <summary>
-		/// 审核意见
-		/// </summary>
-		[SugarColumn(ColumnDescription = "审核意见", ColumnDataType = "varchar(2000)")]
-		public string? AuditOpinion { get; set; }
+        /// <summary>
+        /// 审核意见
+        /// </summary>
+        [SugarColumn(ColumnDescription = "审核意见", ColumnDataType = "varchar(2000)")]
+        public string? AuditOpinion { get; set; }
 
-		/// <summary>
-		///  审核结果  0  待审核  1 审核通过  2 审核不通过
-		/// </summary>
-		public int State { get; set; }
+        /// <summary>
+        ///  审核结果  0  待审核  1 审核通过  2 审核不通过
+        /// </summary>
+        public int State { get; set; }
 
-		/// <summary>
-		/// 工单
-		/// </summary>
-		[Navigate(NavigateType.OneToOne, nameof(OrderId))]
+        /// <summary>
+        /// 工单
+        /// </summary>
+        [Navigate(NavigateType.OneToOne, nameof(OrderId))]
         public Order Order { get; set; }
 
-		/// <summary>
-		/// 退回目的地
-		/// </summary>
-		public ESendBackDestination Destination { get; set; }
+        /// <summary>
+        /// 退回目的地
+        /// </summary>
+        public ESendBackDestination Destination { get; set; }
 
-		[SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
-		public List<FileJson>? FileJson { get; set; }
-	}
+        [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
+        public List<FileJson>? FileJson { get; set; }
+    }
 }