Browse Source

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

田爽 9 months ago
parent
commit
f9c14c99c2

+ 28 - 5
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -22,6 +22,7 @@ using Hotline.Share.Enums.Order;
 using Hotline.Share.Requests;
 using Hotline.Tools;
 using MapsterMapper;
+using Microsoft.AspNetCore.Cors.Infrastructure;
 using Microsoft.AspNetCore.Mvc;
 using MiniExcelLibs;
 using NPOI.SS.Formula.Functions;
@@ -47,7 +48,7 @@ namespace Hotline.Api.Controllers.Bi
         private readonly IRepository<OrderVisit> _orderVisitRepository;
         private readonly IRepository<TrCallRecord> _trCallRecordRepository;
         private readonly IRepository<OrderPublish> _orderPublishRepository;
-        private readonly IRepository<SystemOrganize> _systemOrganizeRepository;
+        private readonly ISystemOrganizeRepository _systemOrganizeRepository;
         private readonly IRepository<AiOrderVisitDetail> _aiOrderVisitDetailRepository;
         private readonly ISessionContext _sessionContext;
         private readonly ISystemSettingCacheManager _systemSettingCacheManager;
@@ -61,6 +62,7 @@ namespace Hotline.Api.Controllers.Bi
         private readonly IRepository<SystemArea> _systemAreaRepository;
         private readonly IRepository<Hotspot> _hotspotRepository;
         private readonly IRepository<SystemDicData> _systemDicDataRepository;
+        private readonly ISystemDicDataCacheManager _systemDicDataCacheManager;
 
         public BiOrderController(
             IOrderRepository orderRepository,
@@ -74,7 +76,7 @@ namespace Hotline.Api.Controllers.Bi
             IRepository<OrderVisit> orderVisitRepository,
             IRepository<TrCallRecord> trCallRecordRepository,
             IRepository<OrderPublish> orderPublishRepository,
-            IRepository<SystemOrganize> systemOrganizeRepository,
+            ISystemOrganizeRepository systemOrganizeRepository,
             IRepository<AiOrderVisitDetail> aiOrderVisitDetailRepository,
             ISessionContext sessionContext,
             ISystemSettingCacheManager systemSettingCacheManager,
@@ -87,7 +89,8 @@ namespace Hotline.Api.Controllers.Bi
             IOrderReportApplication orderReportApplication,
             IRepository<SystemArea> systemAreaRepository,
             IRepository<Hotspot> hotspotRepository,
-             IRepository<SystemDicData> systemDicDataRepository
+             IRepository<SystemDicData> systemDicDataRepository,
+            ISystemDicDataCacheManager systemDicDataCacheManager
             )
         {
             _orderRepository = orderRepository;
@@ -115,6 +118,7 @@ namespace Hotline.Api.Controllers.Bi
             _systemAreaRepository = systemAreaRepository;
             _hotspotRepository = hotspotRepository;
             _systemDicDataRepository = systemDicDataRepository;
+            _systemDicDataCacheManager = systemDicDataCacheManager;
         }
 
         /// <summary>
@@ -2968,12 +2972,31 @@ namespace Hotline.Api.Controllers.Bi
         [HttpGet("org-visitdetail-list")]
         public async Task<PagedDto<OrgVisitDetailListResp>> OrgVisitDetailList([FromQuery] OrgVisitDetailListReq dto)
         {
-            var query = _orderRepository.OrgVisitDetailList(dto);
+            var query = _orderReportApplication.OrgVisitDetailList(dto);
             var (total, items) = await query.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
 
             return new PagedDto<OrgVisitDetailListResp>(total, _mapper.Map<IReadOnlyList<OrgVisitDetailListResp>>(items));
         }
 
+        /// <summary>
+        /// 部门满意度明细页面基础数据
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("org-visitdetail-list-basedata")]
+        public async Task<object> OrgVisitDetailListBaseData()
+        {
+            var VisitSatisfaction =  _systemDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.VisitSatisfaction);
+            
+            if (_sessionContext.OrgIsCenter)
+            {
+                return new { OrgsOptions = await _systemOrganizeRepository.GetOrgJson() , VisitSatisfaction= VisitSatisfaction };
+            }
+            else
+            {
+                return new { OrgsOptions = await _systemOrganizeRepository.GetOrgJsonForUser(_sessionContext.RequiredOrgId), VisitSatisfaction = VisitSatisfaction };
+            }
+        }
+
         /// <summary>
         /// 部门满意度明细导出
         /// </summary>
@@ -2982,7 +3005,7 @@ namespace Hotline.Api.Controllers.Bi
         [HttpPost("org-visitdetail-list-export")]
         public async Task<FileStreamResult> OrgVisitDetailListExport([FromBody] ExportExcelDto<OrgVisitDetailListReq> dto)
         {
-            var query = _orderRepository.OrgVisitDetailList(dto.QueryDto);
+            var query = _orderReportApplication.OrgVisitDetailList(dto.QueryDto);
 
             List<OrderVisitDetail> orders;
             if (dto.IsExportAll)

+ 7 - 0
src/Hotline.Application/StatisticalReport/IOrderReportApplication.cs

@@ -83,5 +83,12 @@ namespace Hotline.Application.StatisticalReport
         /// <param name="dto"></param>
         /// <returns></returns>
         ISugarQueryable<Order> DepartmentAcceptanceTypeOrderList(DepartmentKeyWordRequest dto);
+
+        /// <summary>
+        /// 满意度明细
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        ISugarQueryable<OrderVisitDetail> OrgVisitDetailList(OrgVisitDetailListReq dto);
     }
 }

+ 32 - 0
src/Hotline.Application/StatisticalReport/OrderReportApplication.cs

@@ -42,6 +42,7 @@ namespace Hotline.Application.StatisticalReport
         private readonly IRepository<OrderScreen> _orderScreenRepository;
         private readonly IOrderSecondaryHandlingApplication _orderSecondaryHandlingApplication;
         private readonly ITimeLimitDomainService _timeLimitDomainService;
+        
 
         public OrderReportApplication(
             IOrderRepository orderRepository,
@@ -86,6 +87,7 @@ namespace Hotline.Application.StatisticalReport
             _orderScreenRepository = orderScreenRepository;
             _orderSecondaryHandlingApplication = orderSecondaryHandlingApplication;
             _timeLimitDomainService = timeLimitDomainService;
+            
         }
         /// <summary>
         /// 部门办件统计表---新
@@ -1802,5 +1804,35 @@ order by ""su"".""OrgCode""";
                  .OrderByDescending(d => d.CreationTime)
                  .MergeTable();
         }
+
+
+        /// <summary>
+        /// 满意度明细
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public ISugarQueryable<OrderVisitDetail> OrgVisitDetailList(OrgVisitDetailListReq dto)
+        {
+            var IsCenter = _sessionContext.OrgIsCenter;
+
+            return _orderVisitDetailRepository.Queryable()
+                .Includes(x => x.OrderVisit, x => x.Order, x => x.OrderScreens)
+                .Includes(x => x.OrderVisit, x => x.Employee)
+                .Where(x => x.OrderVisit.VisitState == EVisitState.Visited && x.VisitTarget == EVisitTarget.Org)
+                .WhereIF(dto.OrgVisitStatisticsType.HasValue, x => x.OrderVisit.Order.ProcessType == (EProcessType)((int)dto.OrgVisitStatisticsType))
+                .WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults), x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.OrgProcessingResults)
+                .WhereIF(!string.IsNullOrEmpty(dto.VisitUser), x => x.OrderVisit.Employee.Name.Contains(dto.VisitUser))
+                .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order.No == dto.No)
+                .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order.Title.Contains(dto.Title))
+                .WhereIF(dto.OrgCodes.Any(), x => dto.OrgCodes.Contains(x.VisitOrgCode))
+                .WhereIF(dto.HotspotIds.Any(), x => dto.HotspotIds.Contains(x.OrderVisit.Order.HotspotId))
+                .WhereIF(dto.Channels.Any(), x => dto.Channels.Contains(x.OrderVisit.Order.SourceChannelCode))
+                .WhereIF(dto.CreationTimeStart.HasValue, x => x.OrderVisit.Order.CreationTime >= dto.CreationTimeStart) //受理时间开始
+                .WhereIF(dto.CreationTimeEnd.HasValue, x => x.OrderVisit.Order.CreationTime <= dto.CreationTimeEnd) //受理时间结束
+                .WhereIF(dto.ActualHandleTimeStart.HasValue, x => x.OrderVisit.Order.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
+                .WhereIF(dto.ActualHandleTimeEnd.HasValue, x => x.OrderVisit.Order.ActualHandleTime <= dto.ActualHandleTimeEnd)
+                .OrderBy(x => x.OrderVisit.VisitTime); //办结时间结束
+
+        }
     }
 }

+ 2 - 24
src/Hotline.Repository.SqlSugar/Orders/OrderRepository.cs

@@ -14,6 +14,7 @@ using System.Linq;
 using System.Linq.Dynamic.Core;
 using System.Reflection;
 using System.Reflection.Emit;
+using XF.Domain.Authentications;
 using XF.Domain.Dependency;
 
 namespace Hotline.Repository.SqlSugar.Orders
@@ -741,30 +742,7 @@ namespace Hotline.Repository.SqlSugar.Orders
             return dt2;
         }
 
-        /// <summary>
-        /// 满意度明细
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <returns></returns>
-        public ISugarQueryable<OrderVisitDetail> OrgVisitDetailList(OrgVisitDetailListReq dto)
-        {
-            return Db.Queryable<OrderVisitDetail>()
-                .Includes(x => x.OrderVisit, x => x.Order, x => x.OrderScreens)
-                .Includes(x => x.OrderVisit, x => x.Employee)
-                .Where(x => x.OrderVisit.VisitState == EVisitState.Visited && x.VisitTarget == EVisitTarget.Org)
-                .WhereIF(dto.OrgVisitStatisticsType.HasValue, x => x.OrderVisit.Order.ProcessType == (EProcessType)((int)dto.OrgVisitStatisticsType))
-                .WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults), x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.OrgProcessingResults)
-                .WhereIF(!string.IsNullOrEmpty(dto.VisitUser), x => x.OrderVisit.Employee.Name.Contains(dto.VisitUser))
-                .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order.No == dto.No)
-                .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order.Title.Contains(dto.Title))
-                .WhereIF(dto.OrgCodes.Any(), x => dto.OrgCodes.Contains(x.VisitOrgCode))
-                .WhereIF(dto.HotspotIds.Any(), x => dto.HotspotIds.Contains(x.OrderVisit.Order.HotspotId))
-                .WhereIF(dto.Channels.Any(), x => dto.Channels.Contains(x.OrderVisit.Order.SourceChannelCode))
-                .WhereIF(dto.CreationTimeStart.HasValue, x => x.OrderVisit.Order.CreationTime >= dto.CreationTimeStart) //受理时间开始
-                .WhereIF(dto.CreationTimeEnd.HasValue, x => x.OrderVisit.Order.CreationTime <= dto.CreationTimeEnd) //受理时间结束
-                .WhereIF(dto.ActualHandleTimeStart.HasValue, x => x.OrderVisit.Order.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
-                .WhereIF(dto.ActualHandleTimeEnd.HasValue, x => x.OrderVisit.Order.ActualHandleTime <= dto.ActualHandleTimeEnd); //办结时间结束
-        }
+        
 
 
 

+ 0 - 6
src/Hotline/Orders/IOrderRepository.cs

@@ -82,12 +82,6 @@ namespace Hotline.Orders
         /// <returns></returns>
         Task<DataTable> OrderSourceTimeExport(TimeSharingPagedKeywordRequest dto);
 
-        /// <summary>
-        /// 满意度明细
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <returns></returns>
-        ISugarQueryable<OrderVisitDetail> OrgVisitDetailList(OrgVisitDetailListReq dto);
 
         /// <summary>
         /// 信件来源统计