Bladeren bron

Merge branch 'release' of http://110.188.24.182:10023/Fengwo/hotline into release

田爽 8 maanden geleden
bovenliggende
commit
7154ccbf6c

+ 133 - 112
src/Hotline.Api/Controllers/OrderController.cs

@@ -615,7 +615,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("published/statistics/department/export")]
-    public async Task<FileStreamResult> ExportQueryPublishedOrderDepartmentAsync([FromBody]ExportExcelDto<QueryOrderPublishStatisticsAllDto> dto)
+    public async Task<FileStreamResult> ExportQueryPublishedOrderDepartmentAsync([FromBody] ExportExcelDto<QueryOrderPublishStatisticsAllDto> dto)
     {
         var (total, list) = await _orderApplication.QueryPublishedOrderDepartmentAsync(dto.QueryDto, dto.IsExportAll);
         if (list != null && list.Count > 0)
@@ -716,7 +716,8 @@ public class OrderController : BaseController
             .FirstAsync();
 
 
-        return new PublishedOrderStatisticsDto {
+        return new PublishedOrderStatisticsDto
+        {
             TotalCount = totalCount,
             PrivateCount = privateCount,
             PublicCount = publicCount,
@@ -1211,7 +1212,8 @@ public class OrderController : BaseController
             FiledTypeOptions = EnumExts.GetDescriptions<FiledType>(),
             AcceptTypeOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
             OrgsOptions = await _organizeRepository.GetOrgJson(),
-            CallForwardingOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.CallForwardingSource)
+            CallForwardingOptions = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.CallForwardingSource),
+            JudgeStateOptions = EnumExts.GetDescriptions<EJudgeState>()
         };
     }
 
@@ -1221,7 +1223,7 @@ public class OrderController : BaseController
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpPost("visit/judge-query-export")]
-    public async Task<FileStreamResult> VisitJudgeQueryExport([FromBody]ExportExcelDto<VisitJudgeQueryReq> dto)
+    public async Task<FileStreamResult> VisitJudgeQueryExport([FromBody] ExportExcelDto<VisitJudgeQueryReq> dto)
     {
         var query = _orderRepository.VisitJudgeQuery(dto.QueryDto);
 
@@ -4103,13 +4105,13 @@ public class OrderController : BaseController
                 audit.AuditUser = "默认通过";
                 audit.AuditTime = DateTime.Now;
                 dto.ExpiredTime = order.ExpiredTime;
-				var flowDirection = await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
+                var flowDirection = await _workflowApplication.PreviousAsync(dto, HttpContext.RequestAborted);
                 var processType = flowDirection == EFlowDirection.OrgToCenter || flowDirection == EFlowDirection.CenterToCenter
                     ? EProcessType.Zhiban
                     : EProcessType.Jiaoban;
                 if (currentStep.AcceptorOrgId != OrgSeedData.CenterId && prevStep.BusinessType == EBusinessType.Send)
                     order.SendBackNum = order.SendBackNum.HasValue ? order.SendBackNum.Value + 1 : 1;
-				await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType,SendBackNum = order.SendBackNum })
+                await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
                     .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
                 //发送短信TODO
             }
@@ -4124,8 +4126,8 @@ public class OrderController : BaseController
                 ? EProcessType.Zhiban
                 : EProcessType.Jiaoban;
             if (currentStep.AcceptorOrgId != OrgSeedData.CenterId && prevStep.BusinessType == EBusinessType.Send)
-	            order.SendBackNum = order.SendBackNum.HasValue ? order.SendBackNum.Value + 1 : 1;
-			await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
+                order.SendBackNum = order.SendBackNum.HasValue ? order.SendBackNum.Value + 1 : 1;
+            await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
                 .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
             //发送短信TODO
         }
@@ -4158,11 +4160,11 @@ public class OrderController : BaseController
         //执行退回
         if (sendBack.State == ESendBackAuditState.End)
         {
-	        var order = await _orderRepository.Queryable().Includes(d => d.Workflow).FirstAsync(d => d.Id == sendBack.OrderId);
-			//string applicantId, string applicantOrgId, string[] applicantRoleIds,
-			//    ISessionContext current, CancellationToken cancellationToken);
-			sendBack.SendBackData.ExpiredTime = order.ExpiredTime;
-			var flowDirection = await _workflowApplication.PreviousAsync(sendBack.SendBackData, sendBack.WorkflowUserId,
+            var order = await _orderRepository.Queryable().Includes(d => d.Workflow).FirstAsync(d => d.Id == sendBack.OrderId);
+            //string applicantId, string applicantOrgId, string[] applicantRoleIds,
+            //    ISessionContext current, CancellationToken cancellationToken);
+            sendBack.SendBackData.ExpiredTime = order.ExpiredTime;
+            var flowDirection = await _workflowApplication.PreviousAsync(sendBack.SendBackData, sendBack.WorkflowUserId,
                 sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(), _sessionContext,
                 HttpContext.RequestAborted);
             //var flowDirection = await _workflowApplication.PreviousAsync(sendBack.SendBackData, sendBack.WorkflowUserId, HttpContext.RequestAborted);
@@ -4170,9 +4172,9 @@ public class OrderController : BaseController
                               flowDirection == EFlowDirection.CenterToCenter
                 ? EProcessType.Zhiban
                 : EProcessType.Jiaoban;
-			if (sendBack.ApplyOrgId != OrgSeedData.CenterId && sendBack.SendBackOrgId == OrgSeedData.CenterId)
-				order.SendBackNum = order.SendBackNum.HasValue ? order.SendBackNum.Value + 1 : 1;
-			await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType,SendBackNum = order.SendBackNum })
+            if (sendBack.ApplyOrgId != OrgSeedData.CenterId && sendBack.SendBackOrgId == OrgSeedData.CenterId)
+                order.SendBackNum = order.SendBackNum.HasValue ? order.SendBackNum.Value + 1 : 1;
+            await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
                 .Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
             //发送短信TODO
         }
@@ -4210,9 +4212,9 @@ public class OrderController : BaseController
             //执行退回
             if (sendBack.State == ESendBackAuditState.End)
             {
-	            var order = await _orderRepository.Queryable().Includes(d => d.Workflow).FirstAsync(d => d.Id == sendBack.OrderId);
-	            sendBack.SendBackData.ExpiredTime = order.ExpiredTime;
-				var flowDirection = await _workflowApplication.PreviousAsync(sendBack.SendBackData,
+                var order = await _orderRepository.Queryable().Includes(d => d.Workflow).FirstAsync(d => d.Id == sendBack.OrderId);
+                sendBack.SendBackData.ExpiredTime = order.ExpiredTime;
+                var flowDirection = await _workflowApplication.PreviousAsync(sendBack.SendBackData,
                     sendBack.WorkflowUserId, sendBack.WorkflowOrgId, sendBack.WorkflowRoleIds.ToArray(),
                     _sessionContext, HttpContext.RequestAborted);
                 //var flowDirection = await _workflowApplication.PreviousAsync(sendBack.SendBackData, sendBack.WorkflowUserId, HttpContext.RequestAborted);
@@ -4220,8 +4222,8 @@ public class OrderController : BaseController
                     ? EProcessType.Zhiban
                     : EProcessType.Jiaoban;
                 if (sendBack.ApplyOrgId != OrgSeedData.CenterId && sendBack.SendBackOrgId == OrgSeedData.CenterId)
-	                order.SendBackNum = order.SendBackNum.HasValue ? order.SendBackNum.Value + 1 : 1;
-				await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
+                    order.SendBackNum = order.SendBackNum.HasValue ? order.SendBackNum.Value + 1 : 1;
+                await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
                     .Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
                 //发送短信TODO
             }
@@ -4576,11 +4578,11 @@ public class OrderController : BaseController
                 expiredTime.ExpiredTime = order.ExpiredTime.Value;
                 expiredTime.NearlyExpiredTime = order.NearlyExpiredTime.Value;
                 expiredTime.NearlyExpiredTimeOne = order.NearlyExpiredTimeOne.Value;
-			}
-			//var expiredTime = _timeLimitDomainService.CalcEndTime(DateTime.Now,
-			//	ETimeType.WorkDay,
-			//	dto.TimeLimit.Value, order.AcceptTypeCode);
-			await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ExpiredTime = expiredTime.ExpiredTime, NearlyExpiredTime = expiredTime.NearlyExpiredTime, NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne, ProcessType = processType, Status = EOrderStatus.Special })
+            }
+            //var expiredTime = _timeLimitDomainService.CalcEndTime(DateTime.Now,
+            //	ETimeType.WorkDay,
+            //	dto.TimeLimit.Value, order.AcceptTypeCode);
+            await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ExpiredTime = expiredTime.ExpiredTime, NearlyExpiredTime = expiredTime.NearlyExpiredTime, NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne, ProcessType = processType, Status = EOrderStatus.Special })
                 .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
             var orderDto = _mapper.Map<OrderDto>(order);
             await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
@@ -4588,30 +4590,30 @@ public class OrderController : BaseController
             //}
             await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Recall, HttpContext.RequestAborted);
 
-            if (order.Status  >= EOrderStatus.Filed)
+            if (order.Status >= EOrderStatus.Filed)
             {
-				var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == dto.OrderId);
-				if (publish != null)
-				{
-					var publishHistory = _mapper.Map<OrderPublishHistory>(publish);
-					publishHistory.OrderPublishId = publish.Id;
-					publishHistory.ArrangeTitleAfter = publish.ArrangeTitle;
-					publishHistory.ArrangeTitleBefor = publish.ArrangeTitle;
-					publishHistory.ArrangeContentAfter = publish.ArrangeContent;
-					publishHistory.ArrangeContentBefor = publish.ArrangeContent;
-					publishHistory.ArrangeOpinionAfter = publish.ArrangeOpinion;
-					publishHistory.ArrangeOpinionBefor = publish.ArrangeOpinion;
-					await _orderPublishHistoryRepository.AddAsync(publishHistory, HttpContext.RequestAborted);
-					await _orderPublishRepository.RemoveAsync(publish, false, HttpContext.RequestAborted);
-				}
-
-				var visit = await _orderVisitRepository.GetAsync(x => x.OrderId == dto.OrderId && x.VisitState != EVisitState.None);
-				if (visit != null)
-				{
-					visit.VisitState = EVisitState.None;
-					await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
-				}
-			}
+                var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == dto.OrderId);
+                if (publish != null)
+                {
+                    var publishHistory = _mapper.Map<OrderPublishHistory>(publish);
+                    publishHistory.OrderPublishId = publish.Id;
+                    publishHistory.ArrangeTitleAfter = publish.ArrangeTitle;
+                    publishHistory.ArrangeTitleBefor = publish.ArrangeTitle;
+                    publishHistory.ArrangeContentAfter = publish.ArrangeContent;
+                    publishHistory.ArrangeContentBefor = publish.ArrangeContent;
+                    publishHistory.ArrangeOpinionAfter = publish.ArrangeOpinion;
+                    publishHistory.ArrangeOpinionBefor = publish.ArrangeOpinion;
+                    await _orderPublishHistoryRepository.AddAsync(publishHistory, HttpContext.RequestAborted);
+                    await _orderPublishRepository.RemoveAsync(publish, false, HttpContext.RequestAborted);
+                }
+
+                var visit = await _orderVisitRepository.GetAsync(x => x.OrderId == dto.OrderId && x.VisitState != EVisitState.None);
+                if (visit != null)
+                {
+                    visit.VisitState = EVisitState.None;
+                    await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
+                }
+            }
 
             if (order != null && ("001171".Equals(model.OrgId) ||
                                   "001178".Equals(model.OrgId) ||
@@ -4719,7 +4721,7 @@ public class OrderController : BaseController
             // 计算期满时间
             if (dto.AlterTime)
             {
-                var expiredTime = 
+                var expiredTime =
                    // _timeLimitDomainService.CalcEndTime(
                    await _expireTime.CalcEndTime(
                     DateTime.Now,
@@ -4727,11 +4729,11 @@ public class OrderController : BaseController
                     dto.TimeLimit.Value, order.AcceptTypeCode);
                 if (expiredTime.EndTime < order.ExpiredTime.Value)
                 {
-	                expiredTime.EndTime = order.ExpiredTime.Value;
-	                expiredTime.NearlyExpiredTime = order.NearlyExpiredTime.Value;
-	                expiredTime.NearlyExpiredTimeOne = order.NearlyExpiredTimeOne.Value;
+                    expiredTime.EndTime = order.ExpiredTime.Value;
+                    expiredTime.NearlyExpiredTime = order.NearlyExpiredTime.Value;
+                    expiredTime.NearlyExpiredTimeOne = order.NearlyExpiredTimeOne.Value;
                 }
-				endTime = expiredTime.EndTime;
+                endTime = expiredTime.EndTime;
                 await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { ExpiredTime = expiredTime.EndTime, NearlyExpiredTime = expiredTime.NearlyExpiredTime, NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne })
                     .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
                 var orderDto = _mapper.Map<OrderDto>(order);
@@ -4836,28 +4838,28 @@ public class OrderController : BaseController
             await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Recall, HttpContext.RequestAborted);
             if (order.Status >= EOrderStatus.Filed)
             {
-				var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == special.OrderId);
-				if (publish != null)
-				{
-					var publishHistory = _mapper.Map<OrderPublishHistory>(publish);
-					publishHistory.OrderPublishId = publish.Id;
-					publishHistory.ArrangeTitleAfter = publish.ArrangeTitle;
-					publishHistory.ArrangeTitleBefor = publish.ArrangeTitle;
-					publishHistory.ArrangeContentAfter = publish.ArrangeContent;
-					publishHistory.ArrangeContentBefor = publish.ArrangeContent;
-					publishHistory.ArrangeOpinionAfter = publish.ArrangeOpinion;
-					publishHistory.ArrangeOpinionBefor = publish.ArrangeOpinion;
-					await _orderPublishHistoryRepository.AddAsync(publishHistory, HttpContext.RequestAborted);
-					await _orderPublishRepository.RemoveAsync(publish, false, HttpContext.RequestAborted);
-				}
-
-				var visit = await _orderVisitRepository.GetAsync(x => x.OrderId == special.OrderId && x.VisitState != EVisitState.None);
-				if (visit != null)
-				{
-					visit.VisitState = EVisitState.None;
-					await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
-				}
-			}
+                var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == special.OrderId);
+                if (publish != null)
+                {
+                    var publishHistory = _mapper.Map<OrderPublishHistory>(publish);
+                    publishHistory.OrderPublishId = publish.Id;
+                    publishHistory.ArrangeTitleAfter = publish.ArrangeTitle;
+                    publishHistory.ArrangeTitleBefor = publish.ArrangeTitle;
+                    publishHistory.ArrangeContentAfter = publish.ArrangeContent;
+                    publishHistory.ArrangeContentBefor = publish.ArrangeContent;
+                    publishHistory.ArrangeOpinionAfter = publish.ArrangeOpinion;
+                    publishHistory.ArrangeOpinionBefor = publish.ArrangeOpinion;
+                    await _orderPublishHistoryRepository.AddAsync(publishHistory, HttpContext.RequestAborted);
+                    await _orderPublishRepository.RemoveAsync(publish, false, HttpContext.RequestAborted);
+                }
+
+                var visit = await _orderVisitRepository.GetAsync(x => x.OrderId == special.OrderId && x.VisitState != EVisitState.None);
+                if (visit != null)
+                {
+                    visit.VisitState = EVisitState.None;
+                    await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
+                }
+            }
 
             if (order != null && ("001171".Equals(special.OrgId) ||
                                   "001178".Equals(special.OrgId) ||
@@ -4949,28 +4951,28 @@ public class OrderController : BaseController
                 await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Recall, HttpContext.RequestAborted);
                 if (order.Status >= EOrderStatus.Filed)
                 {
-					var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == special.OrderId);
-					if (publish != null)
-					{
-						var publishHistory = _mapper.Map<OrderPublishHistory>(publish);
-						publishHistory.OrderPublishId = publish.Id;
-						publishHistory.ArrangeTitleAfter = publish.ArrangeTitle;
-						publishHistory.ArrangeTitleBefor = publish.ArrangeTitle;
-						publishHistory.ArrangeContentAfter = publish.ArrangeContent;
-						publishHistory.ArrangeContentBefor = publish.ArrangeContent;
-						publishHistory.ArrangeOpinionAfter = publish.ArrangeOpinion;
-						publishHistory.ArrangeOpinionBefor = publish.ArrangeOpinion;
-						await _orderPublishHistoryRepository.AddAsync(publishHistory, HttpContext.RequestAborted);
-						await _orderPublishRepository.RemoveAsync(publish, false, HttpContext.RequestAborted);
-					}
-
-					var visit = await _orderVisitRepository.GetAsync(x => x.OrderId == special.OrderId && x.VisitState != EVisitState.None);
-					if (visit != null)
-					{
-						visit.VisitState = EVisitState.None;
-						await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
-					}
-				}
+                    var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == special.OrderId);
+                    if (publish != null)
+                    {
+                        var publishHistory = _mapper.Map<OrderPublishHistory>(publish);
+                        publishHistory.OrderPublishId = publish.Id;
+                        publishHistory.ArrangeTitleAfter = publish.ArrangeTitle;
+                        publishHistory.ArrangeTitleBefor = publish.ArrangeTitle;
+                        publishHistory.ArrangeContentAfter = publish.ArrangeContent;
+                        publishHistory.ArrangeContentBefor = publish.ArrangeContent;
+                        publishHistory.ArrangeOpinionAfter = publish.ArrangeOpinion;
+                        publishHistory.ArrangeOpinionBefor = publish.ArrangeOpinion;
+                        await _orderPublishHistoryRepository.AddAsync(publishHistory, HttpContext.RequestAborted);
+                        await _orderPublishRepository.RemoveAsync(publish, false, HttpContext.RequestAborted);
+                    }
+
+                    var visit = await _orderVisitRepository.GetAsync(x => x.OrderId == special.OrderId && x.VisitState != EVisitState.None);
+                    if (visit != null)
+                    {
+                        visit.VisitState = EVisitState.None;
+                        await _orderVisitRepository.UpdateAsync(visit, HttpContext.RequestAborted);
+                    }
+                }
 
                 if (order != null && ("001171".Equals(special.OrgId) ||
                                       "001178".Equals(special.OrgId) ||
@@ -6529,7 +6531,7 @@ public class OrderController : BaseController
 
         foreach (var item in dto.Ids)
         {
-            var orderData = await _orderRepository.GetAsync(p => p.Id == item, HttpContext.RequestAborted);
+            var orderData = await _orderRepository.GetAsync(p => p.ProvinceNo == item, HttpContext.RequestAborted);
 
             if (orderData != null)
             {
@@ -6564,7 +6566,7 @@ public class OrderController : BaseController
     }
 
     /// <summary>
-    /// 获取修改记录
+    /// 根据工单ID获取修改记录
     /// </summary>
     /// <returns></returns>
     [HttpGet("get-order-modifying-records-list")]
@@ -6575,6 +6577,25 @@ public class OrderController : BaseController
         return _mapper.Map<IReadOnlyList<OrderModifyingRecordsDto>>(list);
     }
 
+    /// <summary>
+    /// 获取修改记录
+    /// </summary>
+    /// <returns></returns>
+    [HttpGet("get-order-modifying-records-all-list")]
+    public async Task<IReadOnlyList<OrderModifyingRecordsDto>> GetOrderModifyingRecordsAllList([FromQuery] OrderModifyingRecordsRequest dto)
+    {
+        var list = await _orderModifyingRecordsRepository.Queryable()
+            .WhereIF(dto.StartTime.HasValue, p => p.CreationTime >= dto.StartTime)
+            .WhereIF(dto.EndTime.HasValue, p => p.CreationTime <= dto.EndTime)
+            .WhereIF(!string.IsNullOrEmpty(dto.OrderNo), p => p.OrderNo.Contains(dto.OrderNo))
+            .WhereIF(!string.IsNullOrEmpty(dto.ProvinceNo), p => p.ProvinceNo.Contains(dto.ProvinceNo))
+            .WhereIF(dto.UpdateOrderType == "0", p => p.UpdateOrderType == EUpdateType.ExpiredTime)
+            .WhereIF(dto.UpdateOrderType == "1", p => p.UpdateOrderType == EUpdateType.SourceChannel)
+            .OrderByDescending(p => p.CreationTime)
+           .ToListAsync();
+        return _mapper.Map<IReadOnlyList<OrderModifyingRecordsDto>>(list);
+    }
+
     #endregion
 
     #region 工单平移
@@ -6728,16 +6749,16 @@ public class OrderController : BaseController
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
     }
 
-	/// <summary>
-	/// 生成分析报告
-	/// </summary>
-	/// <param name="dtos"></param>
-	/// <returns></returns>
-	[HttpGet("analysis_report")]
-	[LogFilter("生成分析报告")]
-	public async Task<object> OrderAnalysisReportQuery([FromQuery] OrderAnalysisDetailDto dto)
-	{
-		 return await _orderAnalysisApplication.ReportQuery(dto, HttpContext.RequestAborted);
-	}
-	#endregion
+    /// <summary>
+    /// 生成分析报告
+    /// </summary>
+    /// <param name="dtos"></param>
+    /// <returns></returns>
+    [HttpGet("analysis_report")]
+    [LogFilter("生成分析报告")]
+    public async Task<object> OrderAnalysisReportQuery([FromQuery] OrderAnalysisDetailDto dto)
+    {
+        return await _orderAnalysisApplication.ReportQuery(dto, HttpContext.RequestAborted);
+    }
+    #endregion
 }

+ 10 - 7
src/Hotline.Api/Controllers/TestController.cs

@@ -45,6 +45,7 @@ using Hotline.Users;
 using MapsterMapper;
 using MediatR;
 using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Builder.Extensions;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.Extensions.Options;
 using MiniExcelLibs;
@@ -174,7 +175,8 @@ IRepository<Hotspot> hotspotRepository,
 IOrderDomainService orderDomainService,
 ICallApplication callApplication,
         IOptionsSnapshot<AppConfiguration> appOptions,
-ICalcExpireTime expireTime)
+        ISystemSettingCacheManager systemSettingCacheManager
+        )
     {
         _logger = logger;
         //_authorizeGenerator = authorizeGenerator;
@@ -221,7 +223,7 @@ ICalcExpireTime expireTime)
         _orderDomainService = orderDomainService;
         _callApplication = callApplication;
         _appOptions = appOptions;
-        _expireTime = expireTime;
+        _systemSettingCacheManager = systemSettingCacheManager;
     }
 
 
@@ -706,7 +708,7 @@ ICalcExpireTime expireTime)
     }
 
     [AllowAnonymous]
-    [HttpPost("republish")]
+    [HttpGet("republish")]
     public async Task Republish()
     {
         var provinceNos = new List<string>
@@ -911,7 +913,6 @@ ICalcExpireTime expireTime)
         _logger.LogWarning($"推送数据共:{provinceNos.Count}");
 
         var unpublishOrders = await _orderRepository.Queryable()
-            .Includes(d => d.Workflow, w => w.Steps.Where(s => s.StepType == EStepType.End))
             .Where(d => provinceNos.Contains(d.ProvinceNo) &&
                         !string.IsNullOrEmpty(d.ProvinceNo) &&
                         d.Status >= EOrderStatus.Filed)
@@ -921,10 +922,13 @@ ICalcExpireTime expireTime)
 
         foreach (var order in unpublishOrders)
         {
+            var trace = await _workflowTraceRepository.Queryable()
+                .FirstAsync(d => d.WorkflowId == order.WorkflowId && d.StepType == EStepType.End,
+                    HttpContext.RequestAborted);
             var orderFlowDto = new OrderFlowDto
             {
                 Order = _mapper.Map<OrderDto>(order),
-                WorkflowTrace = _mapper.Map<WorkflowTraceDto>(order.Workflow.Traces.First())
+                WorkflowTrace = _mapper.Map<WorkflowTraceDto>(trace)
             };
 
             if (order.SourceChannelCode == AppDefaults.SourceChannel.DianHua &&
@@ -949,10 +953,9 @@ ICalcExpireTime expireTime)
             //这里需要判断是否是警情退回
             orderFlowDto.IsNonPoliceReturn = false;
             await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderFiled, orderFlowDto, cancellationToken: HttpContext.RequestAborted);
-            _logger.LogWarning($"推送完成: {order.Id}");
+            _logger.LogWarning($"推送完成: {order.ProvinceNo}");
         }
 
         _logger.LogWarning($"推送完成");
     }
-
 }

+ 2 - 1
src/Hotline.Application/Mappers/CallMapperConfigs.cs

@@ -124,7 +124,8 @@ namespace Hotline.Application.Mappers
                 .Map(d => d.FromNo, s => s.CPN)
                 .Map(d => d.ToNo, s => s.CDPN)
                 .Map(d => d.EndRingTime, s => s.EndRingTimg)
-                .Map(d => d.AudioFile, s => s.RecordingAbsolutePath);
+                .Map(d => d.AudioFile, s => s.RecordingAbsolutePath)
+                .Map(d => d.BeginIvrTime, s => s.CreatedTime);
 
         }
 

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

@@ -24,7 +24,6 @@ using Hotline.Share.Enums.FlowEngine;
 using Hotline.Share.Enums.Order;
 using Hotline.Share.Mq;
 using MapsterMapper;
-using Microsoft.AspNetCore.Http;
 using Microsoft.Extensions.Options;
 using XF.Domain.Dependency;
 using XF.Domain.Exceptions;
@@ -35,7 +34,7 @@ namespace Hotline.Application.Subscribers
     /// <summary>
     /// 订阅来自DataSharing的消息
     /// </summary>
-    public class DataSharingSubscriber : IDataSharingSubscriber, ICapSubscribe, ITransientDependency
+    public class DataSharingSubscriber : ICapSubscribe, ITransientDependency
     {
         private readonly IRepository<OrderVisit> _orderVisitRepository;
         private readonly IMapper _mapper;
@@ -46,7 +45,7 @@ namespace Hotline.Application.Subscribers
         private readonly IRepository<OrderSendBack> _orderSendBackRepository;
         private readonly IWorkflowApplication _workflowApplication;
         private readonly IWorkflowDomainService _workflowDomainService;
-        private readonly IWorkflowRepository _workflowRepository;
+        private readonly IRepository<WorkflowTrace> _workflowTraceRepository;
         private readonly IFileRepository _fileRepository;
         private readonly IRepository<OrderUrge> _orderUrgeRepository;
         private readonly IRepository<OrderSupervise> _orderSuperviseRepository;
@@ -75,7 +74,7 @@ namespace Hotline.Application.Subscribers
             IRepository<OrderSendBack> orderSendBackRepository,
             IWorkflowApplication workflowApplication,
             IWorkflowDomainService workflowDomainService,
-            IWorkflowRepository workflowRepository,
+            IRepository<WorkflowTrace> workflowTraceRepository,
             IRepository<OrderUrge> orderUrgeRepository,
             IRepository<OrderSupervise> orderSuperviseRepository,
             IRepository<OrderVisitDetail> orderVisitedDetailRepository,
@@ -97,7 +96,7 @@ namespace Hotline.Application.Subscribers
             _orderSendBackRepository = orderSendBackRepository;
             _workflowApplication = workflowApplication;
             _workflowDomainService = workflowDomainService;
-            _workflowRepository = workflowRepository;
+            _workflowTraceRepository = workflowTraceRepository;
             _orderUrgeRepository = orderUrgeRepository;
             _orderSuperviseRepository = orderSuperviseRepository;
             _orderScreenRepository = orderScreenRepository;
@@ -858,7 +857,6 @@ namespace Hotline.Application.Subscribers
         public async Task RepublishFiledOrders(List<string> provinceNos, CancellationToken cancellationToken)
         {
             var unpublishOrders = await _orderRepository.Queryable()
-                .Includes(d => d.Workflow, w => w.Steps.Where(s => s.StepType == EStepType.End))
                 .Where(d => provinceNos.Contains(d.ProvinceNo) &&
                             !string.IsNullOrEmpty(d.ProvinceNo) &&
                             d.Status >= EOrderStatus.Filed)
@@ -866,10 +864,12 @@ namespace Hotline.Application.Subscribers
 
             foreach (var order in unpublishOrders)
             {
+                var trace = await _workflowTraceRepository.Queryable()
+                    .FirstAsync(d => d.WorkflowId == order.WorkflowId && d.StepType == EStepType.End, cancellationToken);
                 var orderFlowDto = new OrderFlowDto
                 {
                     Order = _mapper.Map<OrderDto>(order),
-                    WorkflowTrace = _mapper.Map<WorkflowTraceDto>(order.Workflow.Traces.First())
+                    WorkflowTrace = _mapper.Map<WorkflowTraceDto>(trace)
                 };
 
                 if (order.SourceChannelCode == AppDefaults.SourceChannel.DianHua &&
@@ -899,7 +899,4 @@ namespace Hotline.Application.Subscribers
         }
     }
 
-    public interface IDataSharingSubscriber
-    {
-    }
 }

+ 1 - 1
src/Hotline.Share/Hotline.Share.csproj

@@ -7,7 +7,7 @@
     <GenerateDocumentationFile>True</GenerateDocumentationFile>
     <NoWarn>$(NoWarn);1591;8618;</NoWarn>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-    <Version>1.0.93</Version>
+    <Version>1.0.94</Version>
   </PropertyGroup>
 
   <ItemGroup>

+ 29 - 0
src/Hotline.Share/Requests/OrderModifyingRecordsRequest.cs

@@ -0,0 +1,29 @@
+namespace Hotline.Share.Requests
+{
+    public record OrderModifyingRecordsRequest : PagedRequest
+    {
+        /// <summary>
+        /// 开始时间
+        /// </summary>
+        public DateTime? StartTime { get; set; }
+        /// <summary>
+        /// 结束时间
+        /// </summary>
+        public DateTime? EndTime { get; set; }
+
+        /// <summary>
+        /// 工单编号
+        /// </summary>
+        public string? OrderNo { get; set; }
+
+        /// <summary>
+        /// 省编号
+        /// </summary>
+        public string? ProvinceNo { get; set; }
+
+        /// <summary>
+        /// 修改类型 0:期满时间修改,1:来源方式修改
+        /// </summary>
+        public string? UpdateOrderType { get; set; }
+    }
+}

+ 1 - 1
src/Hotline/Settings/TimeLimitDomain/ExpireTimeHandler.cs

@@ -126,7 +126,7 @@ public class ExpireTimeHandler : IExpireTimeHandler, IScopeDependency
                 {
                     i++;
                     //如果是工作日
-                    if (await NotWorkDay(beginTime))
+                    if (await IsWorkDay(beginTime))
                     {
                         //最后一天
                         if (beginTime.Date == endTime.Date)

+ 1 - 1
src/Hotline/Settings/TimeLimitDomain/ExpireTimeLimitBase.cs

@@ -40,7 +40,7 @@ public abstract class ExpireTimeLimitBase
 
     public virtual async Task<int> CalcWorkTimeEx(DateTime beginTime, DateTime endTime, bool isCenter)
     {
-        var workTime = _systemSettingRepository.Get(x => x.Code == SettingConstants.WorkTime);
+        var workTime = _systemSettingRepository.Get(x => x.Code == SettingConstants.WorkTimeOrg);
         return await _expireTimeHandler.CalcWorkTimeExAsync(beginTime, endTime, workTime.SettingValue, isCenter);
     }