Browse Source

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

tangjiang 7 months ago
parent
commit
43e0ccf367

+ 209 - 35
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -26,6 +26,7 @@ using Hotline.Share.Tools;
 using Hotline.Tools;
 using MapsterMapper;
 using MediatR;
+using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
 using SqlSugar;
 using System.Data;
@@ -132,6 +133,173 @@ namespace Hotline.Api.Controllers.Bi
             _organizeRepository = organizeRepository;
         }
 
+        /// <summary>
+        /// 部门发布量统计
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("published/statistics/department")]
+        public async Task<PagedDto<PublishedOrderStatisticsDto>> QueryPublishedOrderDepartmentAsync([FromQuery] QueryOrderPublishStatisticsAllDto dto)
+        {
+            var (total, items) = await _orderApplication.QueryPublishedOrderDepartmentAsync(dto, false);
+            return new PagedDto<PublishedOrderStatisticsDto>(total, _mapper.Map<IReadOnlyList<PublishedOrderStatisticsDto>>(items));
+        }
+
+        /// <summary>
+        /// 部门发布量统计-导出
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost("published/statistics/department/export")]
+        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)
+            {
+                list.Add(new PublishedOrderStatisticsDto()
+                {
+                    Name = "合计",
+                    PrivateCount = list.Sum(m => m.PrivateCount),
+                    // TotalCount = list.Sum(p => p.TotalCount),
+                    PublicCount = list.Sum(m => m.PublicCount),
+                    WaitCount = list.Sum(m => m.WaitCount)
+                });
+            }
+
+            dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
+
+            var dtos = list
+                .Select(stu => _mapper.Map(stu, typeof(PublishedOrderStatisticsDto), dynamicClass))
+                .Cast<object>()
+                .ToList();
+
+            var stream = ExcelHelper.CreateStream(dtos);
+
+            return ExcelStreamResult(stream, "部门发布量统计");
+        }
+
+        /// <summary>
+        /// 发布量统计
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("published/statistics/user")]
+        public async Task<PagedDto<PublishedOrderStatisticsDto>> QueryPublishedOrderUserAsync([FromQuery] QueryOrderPublishStatisticsDto dto)
+        {
+            var (total, list) = await _orderApplication.QueryPublishedOrderAsync(dto, false);
+            return new PagedDto<PublishedOrderStatisticsDto>(total, _mapper.Map<IReadOnlyList<PublishedOrderStatisticsDto>>(list));
+        }
+
+        /// <summary>
+        /// 发布量统计-导出
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost("published/statistics/user/export")]
+        public async Task<FileStreamResult> ExportQueryPublishedOrder([FromBody] ExportExcelDto<QueryOrderPublishStatisticsDto> dto)
+        {
+            var (total, list) = await _orderApplication.QueryPublishedOrderAsync(dto.QueryDto, dto.IsExportAll);
+            if (list != null && list.Count > 0)
+            {
+                list.Add(new PublishedOrderStatisticsDto()
+                {
+                    Name = "合计",
+                    PrivateCount = list.Sum(m => m.PrivateCount),
+                    //TotalCount = list.Sum(p => p.TotalCount),
+                    PublicCount = list.Sum(m => m.PublicCount),
+                    WaitCount = list.Sum(m => m.WaitCount)
+                });
+            }
+
+            dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
+
+            var dtos = list
+                .Select(stu => _mapper.Map(stu, typeof(PublishedOrderStatisticsDto), dynamicClass))
+                .Cast<object>()
+                .ToList();
+
+            var stream = ExcelHelper.CreateStream(dtos);
+
+            return ExcelStreamResult(stream, "发布量统计");
+        }
+
+        /// <summary>
+        /// 发布量统计
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("published/statistics")]
+        public async Task<PublishedOrderStatisticsDto> QueryPublishedOrderAsync([FromQuery] QueryOrderPublishStatisticsAllDto dto)
+        {
+            dto.EndTime = dto.EndTime.AddDays(1).AddSeconds(-1);
+
+            var waitCount = await _orderRepository.Queryable()
+             .Where(order => order.CreationTime >= dto.StartTime && order.CreationTime <= dto.EndTime)
+             .Where(order => order.Status == EOrderStatus.Filed)
+             .Select(order => SqlFunc.AggregateCount(order.Id))
+             .FirstAsync();
+
+            var publicCount = await _orderPublishRepository.Queryable()
+                .Where(publish => publish.CreationTime >= dto.StartTime && publish.CreationTime <= dto.EndTime)
+                .Where(publish => publish.PublishState == true)
+                .Select(publish => SqlFunc.AggregateCount(publish.Id))
+                .FirstAsync();
+
+            var privateCount = await _orderPublishRepository.Queryable()
+                .Where(publish => publish.CreationTime >= dto.StartTime && publish.CreationTime <= dto.EndTime)
+                .Where(publish => publish.PublishState == false)
+                .Select(publish => SqlFunc.AggregateCount(publish.Id))
+                .FirstAsync();
+
+
+            return new PublishedOrderStatisticsDto
+            {
+                // TotalCount = totalCount,
+                PrivateCount = privateCount,
+                PublicCount = publicCount,
+                WaitCount = waitCount
+            };
+        }
+
+        /// <summary>
+        /// 回访来源统计
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("visit/source")]
+        [AllowAnonymous]
+        public async Task<IList<OrderVisitSourceChannelDto>> QueryOrderVisitSourceChannelAsync([FromQuery] QueryOrderVisitSourceChannelDto dto)
+            => await _orderApplication.QueryOrderVisitSourceChannelAsync(dto);
+
+        /// <summary>
+        /// 回访来源统计--导出
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("visit/source/export")]
+        [AllowAnonymous]
+        public async Task<FileStreamResult> QueryOrderVisitSourceChannelExportAsync([FromBody] ExportExcelDto<QueryOrderVisitSourceChannelDto> dto)
+        {
+            var list = await _orderApplication.QueryOrderVisitSourceChannelAsync(dto.QueryDto);
+            if (list != null && list.Count > 0)
+            {
+                list.Add(new OrderVisitSourceChannelDto()
+                {
+                    SourceChannel = "合计",
+                    Count = list.Sum(p => p.Count)
+                });
+            }
+
+            dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
+
+            var dtos = list
+                .Select(stu => _mapper.Map(stu, typeof(OrderVisitSourceChannelDto), dynamicClass))
+                .Cast<object>()
+                .ToList();
+
+            var stream = ExcelHelper.CreateStream(dtos);
+
+            return ExcelStreamResult(stream, "回访来源统计");
+        }
+
         /// <summary>
         /// 部门超期统计明细
         /// </summary>
@@ -522,7 +690,7 @@ namespace Hotline.Api.Controllers.Bi
                 .Where(x => SqlFunc.JsonListObjectAny(x.OrgNoSatisfiedReason, "Key", dto.DissatisfiedKey))
                 .WhereIF(dto.VisitOrgName.NotNullOrEmpty(), x => x.VisitOrgName.Contains(dto.VisitOrgName))
                 .WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(_sessionContext.RequiredOrgId))
-                .WhereIF(IsCenter == true,x => x.VisitOrgCode.StartsWith(dto.OrgCode))
+                .WhereIF(IsCenter == true, x => x.VisitOrgCode.StartsWith(dto.OrgCode))
                 .WhereIF(!string.IsNullOrEmpty(dto.Keyword), x => x.OrderVisit.Order.No.Contains(dto.Keyword) || x.OrderVisit.Order.Title.Contains(dto.Keyword))
                 .OrderBy(x => x.OrderVisit.VisitTime)
                 .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
@@ -1142,7 +1310,7 @@ namespace Hotline.Api.Controllers.Bi
         public async Task<PagedDto<OrgVisitDetailListResp>> VisitAndOrgSatisfactionDetail([FromQuery] VisitAndOrgSatisfactionDetailDto dto)
         {
             //var (total, items) = await _orderApplication.VisitAndOrgSatisfactionDetail(dto)
-            var (total,items) = await _orderRepository.VisitAndOrgSatisfactionDetail(dto)
+            var (total, items) = await _orderRepository.VisitAndOrgSatisfactionDetail(dto)
                 .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
             return new PagedDto<OrgVisitDetailListResp>(total, _mapper.Map<IReadOnlyList<OrgVisitDetailListResp>>(items));
         }
@@ -2671,7 +2839,7 @@ namespace Hotline.Api.Controllers.Bi
             foreach (var item in itemsVo)
             {
                 // item.UnsignedTime = _timeLimitDomainService.CalcWorkTimeToHour(item.WorkflowStep.CreationTime, item.WorkflowStep.Status != EWorkflowStepStatus.WaitForAccept && item.WorkflowStep.AcceptTime.HasValue ?  item.WorkflowStep.AcceptTime!.Value : DateTime.Now, false);
-                item.UnsignedTime = await _expireTime.CalcWorkTimeToHour(item.WorkflowStep.CreationTime, item.WorkflowStep.Status != EWorkflowStepStatus.WaitForAccept && item.WorkflowStep.AcceptTime.HasValue ?  item.WorkflowStep.AcceptTime!.Value : DateTime.Now, false);
+                item.UnsignedTime = await _expireTime.CalcWorkTimeToHour(item.WorkflowStep.CreationTime, item.WorkflowStep.Status != EWorkflowStepStatus.WaitForAccept && item.WorkflowStep.AcceptTime.HasValue ? item.WorkflowStep.AcceptTime!.Value : DateTime.Now, false);
             }
             return new PagedDto<UnsignedOrderDto>(total, itemsVo);
         }
@@ -2724,9 +2892,13 @@ namespace Hotline.Api.Controllers.Bi
         [HttpGet("order_source_report")]
         public async Task<IReadOnlyList<OrderSourceVo>> QueryOrderSourceReport([FromQuery] QueryOrderSourceRequest dto)
         {
-            var count = await _orderApplication.QueryOrderSource(dto).CountAsync();
+            if (dto.EndTime.HasValue)
+                dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
+            //var count = await _orderApplication.QueryOrderSource(dto).CountAsync();
             var query = _orderApplication.QueryOrderSource(dto);
-            var items = await query.GroupBy(d => d.SourceChannel).Select(d => new OrderSourceVo { Source = d.SourceChannel, Num = SqlFunc.AggregateCount(d.Id), TotalSumCount = count }).ToListAsync(HttpContext.RequestAborted);
+            var items = await query.GroupBy(d => d.SourceChannel).Select(d => new OrderSourceVo { Source = d.SourceChannel, Num = SqlFunc.AggregateCount(d.Id) }).ToListAsync(HttpContext.RequestAborted);
+            var count = items.Sum(x => x.Num);
+            items.ForEach(x => x.TotalSumCount = count);
             items.Add(new OrderSourceVo { Source = "合计", Num = count, TotalSumCount = count });
             return items;
         }
@@ -2738,8 +2910,10 @@ namespace Hotline.Api.Controllers.Bi
         [HttpPost("order_source/_export")]
         public async Task<FileStreamResult> QueryOrderSourceReport([FromBody] ExportExcelDto<QueryOrderSourceRequest> dto)
         {
-            var count = await _orderApplication.QueryOrderSource(dto.QueryDto).CountAsync();
-            var query = _orderApplication.QueryOrderSource(dto.QueryDto).GroupBy(d => d.SourceChannel).Select(d => new OrderSourceVo { Source = d.SourceChannel, Num = SqlFunc.AggregateCount(d.Id), TotalSumCount = count });
+            if (dto.QueryDto.EndTime.HasValue)
+                dto.QueryDto.EndTime = dto.QueryDto.EndTime.Value.AddDays(1).AddSeconds(-1);
+            //var count = await _orderApplication.QueryOrderSource(dto.QueryDto).CountAsync();
+            var query = _orderApplication.QueryOrderSource(dto.QueryDto).GroupBy(d => d.SourceChannel).Select(d => new OrderSourceVo { Source = d.SourceChannel, Num = SqlFunc.AggregateCount(d.Id) });
             List<OrderSourceVo> orderSources;
             if (dto.IsExportAll)
             {
@@ -2750,6 +2924,8 @@ namespace Hotline.Api.Controllers.Bi
                 var (_, items) = await query.ToPagedListAsync(dto.QueryDto, HttpContext.RequestAborted);
                 orderSources = items;
             }
+            var count = orderSources.Sum(x => x.Num);
+            orderSources.ForEach(x => x.TotalSumCount = count);
             orderSources.Add(new OrderSourceVo { Source = "合计", Num = count, TotalSumCount = count });
             dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
             var dtos = orderSources
@@ -3156,7 +3332,6 @@ namespace Hotline.Api.Controllers.Bi
         [HttpGet("accepttype-statistics")]
         public async Task<List<AcceptTypeStatisticsDto>> AcceptTypeStatistics([FromQuery] AcceptTypeStatisticsReq dto)
         {
-            dto.EndTime = dto.EndTime.AddDays(1).AddSeconds(-1);
             var list = await _orderReportApplication.AcceptTypeStatistics(dto).ToListAsync();
             int SumCount = list.Sum(x => x.SumCount);
             list.Add(new AcceptTypeStatisticsDto()
@@ -3183,7 +3358,6 @@ namespace Hotline.Api.Controllers.Bi
         [HttpPost("accepttype-statistics-export")]
         public async Task<FileStreamResult> AcceptTypeStatisticsExport([FromBody] ExportExcelDto<AcceptTypeStatisticsReq> dto)
         {
-
             var list = await _orderReportApplication.AcceptTypeStatistics(dto.QueryDto).ToListAsync();
             int SumCount = list.Sum(x => x.SumCount);
             list.Add(new AcceptTypeStatisticsDto()
@@ -3820,18 +3994,18 @@ namespace Hotline.Api.Controllers.Bi
         {
             var items = await _orderApplication.OrderCenterAccept(dto).ToListAsync(HttpContext.RequestAborted);
             items.Add(new OrderCenterAcceptVo
-			{
-				Time = "合计",
-				AcceptNum = items.Sum(p => p.AcceptNum),
-				ValidNum = items.Sum(p => p.ValidNum),
-				RepetitionNum = items.Sum(p => p.RepetitionNum),
-				InvalidNum = items.Sum(p => p.InvalidNum),
-				HandleNum = items.Sum(p => p.HandleNum),
-				NoHandleNum = items.Sum(p => p.NoHandleNum),
-				BackNum = items.Sum(p => p.BackNum),
-				DutyDeskNum = items.Sum(p => p.DutyDeskNum),
-			});
-			return items;
+            {
+                Time = "合计",
+                AcceptNum = items.Sum(p => p.AcceptNum),
+                ValidNum = items.Sum(p => p.ValidNum),
+                RepetitionNum = items.Sum(p => p.RepetitionNum),
+                InvalidNum = items.Sum(p => p.InvalidNum),
+                HandleNum = items.Sum(p => p.HandleNum),
+                NoHandleNum = items.Sum(p => p.NoHandleNum),
+                BackNum = items.Sum(p => p.BackNum),
+                DutyDeskNum = items.Sum(p => p.DutyDeskNum),
+            });
+            return items;
         }
         /// <summary>
         /// 中心受理统计导出
@@ -3855,17 +4029,17 @@ namespace Hotline.Api.Controllers.Bi
             }
             datas.Add(new OrderCenterAcceptVo
             {
-	            Time = "合计",
-	            AcceptNum = datas.Sum(p => p.AcceptNum),
-	            ValidNum = datas.Sum(p => p.ValidNum),
-	            RepetitionNum = datas.Sum(p => p.RepetitionNum),
-	            InvalidNum = datas.Sum(p => p.InvalidNum),
-	            HandleNum = datas.Sum(p => p.HandleNum),
-	            NoHandleNum = datas.Sum(p => p.NoHandleNum),
-	            BackNum = datas.Sum(p => p.BackNum),
-	            DutyDeskNum = datas.Sum(p => p.DutyDeskNum),
+                Time = "合计",
+                AcceptNum = datas.Sum(p => p.AcceptNum),
+                ValidNum = datas.Sum(p => p.ValidNum),
+                RepetitionNum = datas.Sum(p => p.RepetitionNum),
+                InvalidNum = datas.Sum(p => p.InvalidNum),
+                HandleNum = datas.Sum(p => p.HandleNum),
+                NoHandleNum = datas.Sum(p => p.NoHandleNum),
+                BackNum = datas.Sum(p => p.BackNum),
+                DutyDeskNum = datas.Sum(p => p.DutyDeskNum),
             });
-			dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
+            dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
             var dtos = datas
                 .Select(stu => _mapper.Map(stu, typeof(OrderCenterAcceptVo), dynamicClass))
                 .Cast<object>()
@@ -3883,9 +4057,9 @@ namespace Hotline.Api.Controllers.Bi
         [HttpGet("center-accept-user")]
         public async Task<PagedDto<OrderCenterAcceptUserVo>> OrderCenterAcceptUser([FromQuery] OrderCenterAcceptPagedRequest dto)
         {
-			var (total, items) = await _orderApplication.OrderCenterAcceptUser(dto).ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
-			return new PagedDto<OrderCenterAcceptUserVo>(total, items);
-		}
+            var (total, items) = await _orderApplication.OrderCenterAcceptUser(dto).ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+            return new PagedDto<OrderCenterAcceptUserVo>(total, items);
+        }
         /// <summary>
         /// 中心受理值班坐席统计导出
         /// </summary>
@@ -4044,7 +4218,7 @@ namespace Hotline.Api.Controllers.Bi
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPost("ordervisit-jude-statistics-export")]
-        public async Task<FileStreamResult> OrderVisitJudeStatisticsExport([FromBody]ExportExcelDto<OrderVisitJudeStatisticsReq> dto)
+        public async Task<FileStreamResult> OrderVisitJudeStatisticsExport([FromBody] ExportExcelDto<OrderVisitJudeStatisticsReq> dto)
         {
             var query = _orderApplication.OrderVisitJudeStatistics(dto.QueryDto);
             List<OrderVisitJudeStatisticsRep> exportList;

+ 1 - 167
src/Hotline.Api/Controllers/OrderController.cs

@@ -597,133 +597,7 @@ public class OrderController : BaseController
         return res;
     }
 
-    /// <summary>
-    /// 部门发布量统计
-    /// </summary>
-    /// <param name="dto"></param>
-    /// <returns></returns>
-    [HttpGet("published/statistics/department")]
-    public async Task<PagedDto<PublishedOrderStatisticsDto>> QueryPublishedOrderDepartmentAsync([FromQuery] QueryOrderPublishStatisticsAllDto dto)
-    {
-        var (total, items) = await _orderApplication.QueryPublishedOrderDepartmentAsync(dto, false);
-        return new PagedDto<PublishedOrderStatisticsDto>(total, _mapper.Map<IReadOnlyList<PublishedOrderStatisticsDto>>(items));
-    }
-
-    /// <summary>
-    /// 部门发布量统计-导出
-    /// </summary>
-    /// <param name="dto"></param>
-    /// <returns></returns>
-    [HttpPost("published/statistics/department/export")]
-    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)
-        {
-            list.Add(new PublishedOrderStatisticsDto()
-            {
-                Name = "合计",
-                PrivateCount = list.Sum(m => m.PrivateCount),
-                TotalCount = list.Sum(p => p.TotalCount),
-                PublicCount = list.Sum(m => m.PublicCount),
-                WaitCount = list.Sum(m => m.WaitCount)
-            });
-        }
-
-        dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
-
-        var dtos = list
-            .Select(stu => _mapper.Map(stu, typeof(PublishedOrderStatisticsDto), dynamicClass))
-            .Cast<object>()
-            .ToList();
-
-        var stream = ExcelHelper.CreateStream(dtos);
-
-        return ExcelStreamResult(stream, "部门发布量统计");
-    }
-
-    /// <summary>
-    /// 发布量统计
-    /// </summary>
-    /// <param name="dto"></param>
-    /// <returns></returns>
-    [HttpGet("published/statistics/user")]
-    public async Task<PagedDto<PublishedOrderStatisticsDto>> QueryPublishedOrderUserAsync([FromQuery] QueryOrderPublishStatisticsDto dto)
-    {
-        var (total, list) = await _orderApplication.QueryPublishedOrderAsync(dto, false);
-        return new PagedDto<PublishedOrderStatisticsDto>(total, _mapper.Map<IReadOnlyList<PublishedOrderStatisticsDto>>(list));
-    }
-
-    /// <summary>
-    /// 发布量统计-导出
-    /// </summary>
-    /// <param name="dto"></param>
-    /// <returns></returns>
-    [HttpPost("published/statistics/user/export")]
-    public async Task<FileStreamResult> ExportQueryPublishedOrder([FromBody] ExportExcelDto<QueryOrderPublishStatisticsDto> dto)
-    {
-        var (total, list) = await _orderApplication.QueryPublishedOrderAsync(dto.QueryDto, dto.IsExportAll);
-        if (list != null && list.Count > 0)
-        {
-            list.Add(new PublishedOrderStatisticsDto()
-            {
-                Name = "合计",
-                PrivateCount = list.Sum(m => m.PrivateCount),
-                TotalCount = list.Sum(p => p.TotalCount),
-                PublicCount = list.Sum(m => m.PublicCount),
-                WaitCount = list.Sum(m => m.WaitCount)
-            });
-        }
-
-        dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
-
-        var dtos = list
-            .Select(stu => _mapper.Map(stu, typeof(PublishedOrderStatisticsDto), dynamicClass))
-            .Cast<object>()
-            .ToList();
-
-        var stream = ExcelHelper.CreateStream(dtos);
-
-        return ExcelStreamResult(stream, "发布量统计");
-    }
-
-    /// <summary>
-    /// 发布量统计
-    /// </summary>
-    /// <param name="dto"></param>
-    /// <returns></returns>
-    [HttpGet("published/statistics")]
-    public async Task<PublishedOrderStatisticsDto> QueryPublishedOrderAsync([FromQuery] QueryOrderPublishStatisticsAllDto dto)
-    {
-        dto.EndTime = dto.EndTime.AddDays(1).AddSeconds(-1);
-
-        var totalCount = await _orderRepository.Queryable()
-         .Where(order => order.CreationTime >= dto.StartTime && order.CreationTime <= dto.EndTime)
-         .Select(order => SqlFunc.AggregateCount(order.Id))
-         .FirstAsync();
-
-        var publicCount = await _orderPublishRepository.Queryable()
-            .Where(publish => publish.CreationTime >= dto.StartTime && publish.CreationTime <= dto.EndTime)
-            .Where(publish => publish.PublishState == true)
-            .Select(publish => SqlFunc.AggregateCount(publish.Id))
-            .FirstAsync();
-
-        var privateCount = await _orderPublishRepository.Queryable()
-            .Where(publish => publish.CreationTime >= dto.StartTime && publish.CreationTime <= dto.EndTime)
-            .Where(publish => publish.PublishState == false)
-            .Select(publish => SqlFunc.AggregateCount(publish.Id))
-            .FirstAsync();
-
-
-        return new PublishedOrderStatisticsDto
-        {
-            TotalCount = totalCount,
-            PrivateCount = privateCount,
-            PublicCount = publicCount,
-            WaitCount = totalCount - privateCount - publicCount
-        };
-    }
-
+  
     /// <summary>
     /// 已发布列表
     /// </summary>
@@ -879,46 +753,6 @@ public class OrderController : BaseController
 
     #region 工单回访
 
-    /// <summary>
-    /// 回访来源统计
-    /// </summary>
-    /// <returns></returns>
-    [HttpGet("visit/source")]
-    [AllowAnonymous]
-    public async Task<IList<OrderVisitSourceChannelDto>> QueryOrderVisitSourceChannelAsync([FromQuery] QueryOrderVisitSourceChannelDto dto)
-        => await _orderApplication.QueryOrderVisitSourceChannelAsync(dto);
-
-    /// <summary>
-    /// 回访来源统计--导出
-    /// </summary>
-    /// <returns></returns>
-    [HttpPost("visit/source/export")]
-    [AllowAnonymous]
-    public async Task<FileStreamResult> QueryOrderVisitSourceChannelExportAsync([FromBody] ExportExcelDto<QueryOrderVisitSourceChannelDto> dto)
-    {
-        var list = await _orderApplication.QueryOrderVisitSourceChannelAsync(dto.QueryDto);
-        if (list != null && list.Count > 0)
-        {
-            list.Add(new OrderVisitSourceChannelDto()
-            {
-                SourceChannel = "合计",
-                Count = list.Sum(p => p.Count)
-            });
-        }
-
-        dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass(dto.ColumnInfos);
-
-        var dtos = list
-            .Select(stu => _mapper.Map(stu, typeof(OrderVisitSourceChannelDto), dynamicClass))
-            .Cast<object>()
-            .ToList();
-
-        var stream = ExcelHelper.CreateStream(dtos);
-
-        return ExcelStreamResult(stream, "回访来源统计");
-    }
-
-
     /// <summary>
     /// 回访列表
     /// </summary>

+ 1 - 0
src/Hotline.Api/StartupExtensions.cs

@@ -69,6 +69,7 @@ internal static class StartupExtensions
             .RegisterRepository()
             .AddApplication()
             .AddScoped(typeof(IPasswordHasher<>), typeof(PasswordHasher<>))
+            .AddHttpClient()
             ;
 
         //cache

+ 10 - 13
src/Hotline.Application/Orders/OrderApplication.cs

@@ -483,20 +483,19 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         var query = _orderRepository.Queryable()
             .Includes(order => order.OrderPublish)
             .LeftJoin<User>((order, user) => order.WaitForPublisherId == user.Id)
-            .Where((order, user) => order.FiledTime >= dto.StartTime && order.FiledTime <= dto.EndTime && !string.IsNullOrEmpty(order.WaitForPublisherId))
+            .Where((order, user) => order.CreationTime >= dto.StartTime && order.CreationTime <= dto.EndTime && !string.IsNullOrEmpty(order.WaitForPublisherId))
             .WhereIF(dto.ProcessType != null, (order, user) => order.ProcessType == dto.ProcessType)
             .GroupBy((order, user) => new { order.WaitForPublisherId, user.Name })
             .Select((order, user) => new PublishedOrderStatisticsDto
             {
                 Id = order.WaitForPublisherId,
                 Name = user.Name,
-                TotalCount = SqlFunc.AggregateCount(order.Id),
-                WaitCount = SqlFunc.AggregateSum(SqlFunc.IIF(order.OrderPublish == null, 1, 0)),
-                PublicCount = SqlFunc.AggregateSum(SqlFunc.IIF(order.OrderPublish.PublishState == true, 1, 0)),
+                //TotalCount = SqlFunc.AggregateCount(order.Id),
+                WaitCount =    SqlFunc.AggregateSum(SqlFunc.IIF(order.Status == EOrderStatus.Filed, 1, 0)),
+                PublicCount =  SqlFunc.AggregateSum(SqlFunc.IIF(order.OrderPublish.PublishState == true , 1, 0)),
                 PrivateCount = SqlFunc.AggregateSum(SqlFunc.IIF(order.OrderPublish.PublishState == false, 1, 0))
             });
 
-        var sql = query.ToSql();
         var total = 0;
         var items = new List<PublishedOrderStatisticsDto>();
         if (isFull)
@@ -526,14 +525,14 @@ public class OrderApplication : IOrderApplication, IScopeDependency
 
         var query = _orderRepository.Queryable()
            .Includes(order => order.OrderPublish)
-           .Where(order => order.FiledTime >= dto.StartTime && order.FiledTime <= dto.EndTime && order.ActualHandleOrgName != null)
+           .Where(order => order.CreationTime >= dto.StartTime && order.CreationTime <= dto.EndTime && order.ActualHandleOrgName != null)
            .GroupBy(order => new { Name = order.ActualHandleOrgName, PublishTime = order.CreationTime.ToString("YYYY-MM-DD") })
            .Select(order => new PublishedOrderStatisticsDto
            {
                Name = order.ActualHandleOrgName,
                PublishTime = order.CreationTime.ToString("YYYY-MM-DD"),
-               TotalCount = SqlFunc.AggregateCount(order.Id),
-               // WaitCount = SqlFunc.AggregateSum(SqlFunc.IIF(order.OrderPublish == null, 1, 0)),
+               // TotalCount = SqlFunc.AggregateCount(order.Id),
+               WaitCount = SqlFunc.AggregateSum(SqlFunc.IIF(order.Status == EOrderStatus.Filed, 1, 0)),
                PublicCount = SqlFunc.AggregateSum(SqlFunc.IIF(order.OrderPublish.PublishState == true, 1, 0)),
                PrivateCount = SqlFunc.AggregateSum(SqlFunc.IIF(order.OrderPublish.PublishState == false, 1, 0))
            });
@@ -546,7 +545,6 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             (total, items) = await query.ToPagedListAsync(dto.PageIndex, dto.PageSize);
         }
 
-        items.ForEach(m => m.WaitCount = m.TotalCount - m.PublicCount - m.PrivateCount);
         return (total, items);
     }
 
@@ -558,6 +556,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     /// <exception cref="NotImplementedException"></exception>
     public async Task<IList<OrderVisitSourceChannelDto>> QueryOrderVisitSourceChannelAsync(QueryOrderVisitSourceChannelDto dto)
     {
+        dto.EndTime = dto.EndTime.AddDays(1).AddSeconds(-1);
         var result = await _orderVisitRepository.Queryable()
             .LeftJoin<Order>((visit, order) => order.Id == visit.OrderId)
             .Where((visit, order) => visit.VisitTime >= dto.StartTime && visit.VisitTime <= dto.EndTime)
@@ -734,13 +733,11 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     /// <returns></returns>
     public ISugarQueryable<Order> QueryOrderSource(QueryOrderSourceRequest dto)
     {
-        if (dto.EndTime.HasValue)
-            dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
         return _orderRepository.Queryable()
             .WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime)
             .WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime)
-                .WhereIF(dto.TypeId != null && dto.TypeId == 1, x => x.IdentityType == EIdentityType.Citizen)
-                .WhereIF(dto.TypeId != null && dto.TypeId == 2, x => x.IdentityType == EIdentityType.Enterprise)
+            .WhereIF(dto.TypeId != null && dto.TypeId == 1, x => x.IdentityType == EIdentityType.Citizen)
+            .WhereIF(dto.TypeId != null && dto.TypeId == 2, x => x.IdentityType == EIdentityType.Enterprise)
             .Where(d => d.SourceChannel != null && d.SourceChannel != "");
     }
 

+ 28 - 15
src/Hotline.Share/Dtos/Order/PublishedDto.cs

@@ -30,14 +30,14 @@ public class PublishedDto
 
     public bool? Resolve { get; set; }
 
-	/// <summary>
-	/// 最近更新时间
-	/// </summary>
-	public DateTime? LastModificationTime { get; set; }
+    /// <summary>
+    /// 最近更新时间
+    /// </summary>
+    public DateTime? LastModificationTime { get; set; }
 }
 
 public class PublishedOrderStatisticsDto
-{ 
+{
     /// <summary>
     /// 待发布量
     /// </summary>
@@ -53,10 +53,23 @@ public class PublishedOrderStatisticsDto
     /// </summary>
     public int PrivateCount { get; set; }
 
+    //private int totalCount;
     /// <summary>
     /// 总量
     /// </summary>
-    public int TotalCount { get; set; }
+    public int TotalCount => WaitCount + PublicCount + PrivateCount;
+    //{
+    //    get
+    //    {
+    //        if (totalCount == 0)
+    //            return WaitCount + PublicCount + PrivateCount;
+    //        return totalCount;
+    //    }
+    //    set
+    //    {
+    //        totalCount = value;
+    //    }
+    //}
 
     /// <summary>
     /// 名字
@@ -75,7 +88,7 @@ public class PublishedOrderStatisticsDto
 }
 
 public class QueryPublishedOrderDataDto
-{ 
+{
     /// <summary>
     /// 发布人名称
     /// </summary>
@@ -407,10 +420,10 @@ public class SuperviseOrderDto
 
     public string StateText => State == 0 ? "待办未读" : State == 1 ? "已回复" : State == 2 ? "签收已读" : "-";
 
-	/// <summary>
-	/// 督办签收时间
-	/// </summary>
-	public DateTime? SignTime { get; set; }
+    /// <summary>
+    /// 督办签收时间
+    /// </summary>
+    public DateTime? SignTime { get; set; }
 
     /// <summary>
     /// 督办回复时间
@@ -505,10 +518,10 @@ public class UrgeOrderDto
 
     public string StateText => State == 0 ? "待办未读" : State == 1 ? "已回复" : State == 2 ? "签收已读" : "-";
 
-	/// <summary>
-	/// 催办签收时间
-	/// </summary>
-	public DateTime? SignTime { get; set; }
+    /// <summary>
+    /// 催办签收时间
+    /// </summary>
+    public DateTime? SignTime { get; set; }
 
     /// <summary>
     /// 催办回复时间

+ 15 - 0
src/Hotline/Permissions/EPermission.cs

@@ -1850,6 +1850,11 @@ namespace Hotline.Permissions
         /// </summary>
         [Display(GroupName ="辅助功能",Name ="删除事件",Description ="删除事件")]
         DelEvent = 700902,
+        /// <summary>
+        /// 修改事件
+        /// </summary>
+        [Display(GroupName ="辅助工单",Name ="修改事件",Description ="修改事件")]
+        ModifyEvent = 700903,
         #endregion
 
         #region 短信模板
@@ -2423,6 +2428,11 @@ namespace Hotline.Permissions
         /// </summary>
         [Display(GroupName ="中心办件统计",Name ="发布量统计",Description ="发布量统计")]
         PublishCountStatistics = 110515,
+        /// <summary>
+        /// 扭转信件统计
+        /// </summary>
+        [Display(GroupName ="中心办件统计",Name ="扭转信件统计",Description ="扭转信件统计")]
+        VisitJudeStatistics = 110516,
         #endregion
 
         #region 部门办件统计(11,06,00)
@@ -2628,6 +2638,11 @@ namespace Hotline.Permissions
         /// </summary>
         [Display(GroupName ="数据共享平台",Name = "推送失败查询",Description ="推送失败查询")]
         PublishErrorQuery = 131400,
+        /// <summary>
+        /// 其他平台数据接收
+        /// </summary>
+        [Display(GroupName ="数据共享平台",Name ="其他平台数据接收",Description ="其他平台数据接收")]
+        OtherPlatDataAccept = 131500,
         #endregion
 
         #region 省平台对接(14,00,00)