TANG JIANG 1 tahun lalu
induk
melakukan
0b20d99003

+ 1 - 1
src/Hotline.Api/Controllers/ArticleController.cs

@@ -394,7 +394,7 @@ namespace Hotline.Api.Controllers
         [HttpGet("megcount")]
         public async Task<CircularRecordDto> QueryMegCount()
         {
-            var list = await _circularRecordRepository.Queryable().Where(x => x.UserId == _sessionContext.UserId || x.OrgId == _sessionContext.OrgId).ToListAsync();
+            var list = await _circularRecordRepository.Queryable().Where(x => x.UserId == _sessionContext.RequiredUserId || x.OrgId == _sessionContext.RequiredOrgId).ToListAsync();
             if (list != null && list.Count > 0)
             {
                 var rsp = new CircularRecordDto();

+ 1 - 0
src/Hotline.Api/Controllers/BaseController.cs

@@ -7,6 +7,7 @@ namespace Hotline.Api.Controllers;
 [ApiController]
 [Produces("application/json")]
 [Route("api/v1/[controller]")]
+[LogFilter]
 public class BaseController : ControllerBase
 {
     

+ 75 - 72
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -46,7 +46,7 @@ namespace Hotline.Api.Controllers.Bi
         private readonly ISystemSettingCacheManager _systemSettingCacheManager;
         private readonly IRepository<OrderSpecialDetail> _orderSpecialDetailRepository;
 
-        public BiOrderController(
+		public BiOrderController(
             IOrderRepository orderRepository,
             IRepository<Hotspot> hotspotTypeRepository,
             ISystemDicDataCacheManager sysDicDataCacheManager,
@@ -63,7 +63,7 @@ namespace Hotline.Api.Controllers.Bi
             ISessionContext sessionContext,
             ISystemSettingCacheManager systemSettingCacheManager,
             IRepository<OrderSpecialDetail> orderSpecialDetailRepository
-            )
+			)
         {
             _orderRepository = orderRepository;
             _hotspotTypeRepository = hotspotTypeRepository;
@@ -82,12 +82,12 @@ namespace Hotline.Api.Controllers.Bi
             _systemSettingCacheManager = systemSettingCacheManager;
             _orderSpecialDetailRepository = orderSpecialDetailRepository;
 
-        }
+		}
 
         //public async Task OrgDataListDetail([FromQuery] OrgDataListDetailRequest dto)
         //{
         //    dto.EndDate = dto.EndDate.AddDays(1).AddSeconds(-1);
-
+            
         //    await _orderRepository.Queryable()
         //    .Where(x => x.CreationTime >= dto.StartDate && x.CreationTime <= dto.EndDate)
         //    .WhereIF(dto.QueryType == 1, x => x.Status >= EOrderStatus.Filed && x.ExpiredTime < x.FiledTime) //业务已办超期
@@ -95,7 +95,7 @@ namespace Hotline.Api.Controllers.Bi
         //    .WhereIF(dto.QueryType == 3, x => x.Status < EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate()) //业务待办超期
         //    //.WhereIF(dto.QueryType ==4,) //会签待办超期
         //    .ToPageListAsync(dto.PageIndex, dto.PageSize);
-
+            
         //}
 
 
@@ -117,14 +117,14 @@ namespace Hotline.Api.Controllers.Bi
                 .LeftJoin<SystemOrganize>((x, o) => x.ActualHandleOrgCode == o.Id)
                 .WhereIF(dto.StartTime.HasValue, (x, o) => x.CreationTime >= dto.StartTime)
                 .WhereIF(dto.EndTime.HasValue, (x, o) => x.CreationTime <= dto.EndTime)
-                .WhereIF(IsCenter == false, (x, o) => x.ActualHandleOrgCode == _sessionContext.RequiredOrgId)
+                .WhereIF(IsCenter == false, (x,o) => x.ActualHandleOrgCode == _sessionContext.RequiredOrgId)
                 .GroupBy((x, o) => new { x.ActualHandleOrgCode, o.Name })
                 .Select((x, o) => new OrderBiOrgDataListVo
                 {
                     OrgName = o.Name,
                     OrgId = x.ActualHandleOrgCode,
-                    HandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >= EOrderStatus.Filed && x.ExpiredTime < x.FiledTime, 1, 0)),
-                    NoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status < EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate(), 1, 0)),
+                    HandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >=  EOrderStatus.Filed && x.ExpiredTime < x.FiledTime, 1, 0)),
+                    NoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status <  EOrderStatus.Filed && x.ExpiredTime < SqlFunc.GetDate(), 1, 0)),
                 }).MergeTable();
             var queryCountersign = _workflowCountersignRepository.Queryable()
                 .LeftJoin<WorkflowCountersignMember>((x, o) => x.Id == o.WorkflowCountersignId)
@@ -135,7 +135,7 @@ namespace Hotline.Api.Controllers.Bi
                 {
                     OrgId = o.Key,
                     CounterHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsHandled, 1, 0)),
-                    CounterNoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsHandled == false, 1, 0)),
+                    CounterNoHandlerExtendedNum = SqlFunc.AggregateSum(SqlFunc.IIF(o.IsHandled==false, 1, 0)),
                 }).MergeTable();
 
             var query = queryOrder.LeftJoin(queryCountersign, (or, co) => or.OrgId == co.OrgId)
@@ -192,7 +192,7 @@ namespace Hotline.Api.Controllers.Bi
                     UserName = x.AcceptorName,
                     UserId = x.AcceptorId,
                     //Subtotal = SqlFunc.AggregateCount(x.AcceptorId),
-                    CentreArchive = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >= EOrderStatus.Filed && x.ProcessType == EProcessType.Zhiban, 1, 0)),
+                    CentreArchive = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >=  EOrderStatus.Filed && x.ProcessType == EProcessType.Zhiban, 1, 0)),
                     CentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF(x.Status >= EOrderStatus.Filed && x.ProcessType == EProcessType.Jiaoban, 1, 0)),
                     //NoCentreCareOf = SqlFunc.AggregateSum(SqlFunc.IIF((int)x.Status < 300 && x.ExpiredTime > x.FiledTime, 1, 0)),
                     Invalid = SqlFunc.AggregateSum(SqlFunc.IIF(x.AcceptType == "无效", 1, 0)),
@@ -216,7 +216,7 @@ namespace Hotline.Api.Controllers.Bi
                     query = dto.SortRule == 0 ? query.OrderBy(x => x.Repeat) : query.OrderByDescending(x => x.Repeat);
                     break;
             }
-            var (total, items) = await query.Where(x => (x.CentreArchive + x.CentreCareOf + x.Invalid + x.Repeat) != 0).ToPagedListAsync(dto, HttpContext.RequestAborted);
+            var (total, items) = await query.Where(x=> (x.CentreArchive+x.CentreCareOf+x.Invalid+x.Repeat)!=0).ToPagedListAsync(dto, HttpContext.RequestAborted);
             return new PagedDto<OrderBiCentreDataListVo>(total, items);
         }
 
@@ -540,9 +540,11 @@ namespace Hotline.Api.Controllers.Bi
             dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
             dto.PageIndex = 1;
             dto.PageSize = 10;
+            var IsCenter = _sessionContext.OrgIsCenter;
             var query = _orderRepository.Queryable(false, false, false)
                 .WhereIF(dto.StartTime.HasValue, x => x.CreationTime >= dto.StartTime)
                 .WhereIF(dto.EndTime.HasValue, x => x.CreationTime <= dto.EndTime)
+                .WhereIF(IsCenter == false, x => x.ActualHandleOrgCode.StartsWith(_sessionContext.OrgId))
                 .Select(x => new
                 {
                     AcceptType = x.AcceptType,
@@ -748,16 +750,20 @@ namespace Hotline.Api.Controllers.Bi
 
             var list = await _orderVisitDetailRepository.Queryable()
                 .Where(x => x.OrderVisit.VisitTime >= StartDate && x.OrderVisit.VisitTime <= EndDate && x.VisitTarget == EVisitTarget.Org && x.OrderVisit.VisitState == EVisitState.Visited && !string.IsNullOrEmpty(x.VisitOrgCode))
-                .WhereIF(!string.IsNullOrEmpty(OrgName), x => x.VisitOrgName.Contains(OrgName))
-                .WhereIF(!string.IsNullOrEmpty(LineNum), x => x.OrderVisit.Order.CallRecord.Gateway.Contains(LineNum))
+                .WhereIF(string.IsNullOrEmpty(OrgName)==false, x => x.VisitOrgName.Contains(OrgName))
+                .WhereIF(string.IsNullOrEmpty(LineNum)==false, x => x.OrderVisit.Order.CallRecord.Gateway.Contains(LineNum))
                 .WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(_sessionContext.OrgId))
-                .GroupBy(x => new
+                .GroupByIF(IsCenter,x => new
                 {
                     VisitOrgCode = x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))
                 })
+                .GroupByIF(IsCenter == false, x => new
+                {
+                    VisitOrgCode = x.VisitOrgCode
+                })
                 .Select(x => new VisitAndOrgSatisfactionStatisticsDto()
                 {
-                    OrgCode = x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")),
+                    OrgCode = SqlFunc.IIF(IsCenter,x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6")), x.VisitOrgCode),
                     TotalSumCount = SqlFunc.AggregateCount(x.VisitOrgCode.Substring(SqlFunc.MappingColumn<int>("0"), SqlFunc.MappingColumn<int>("6"))),
                     VerySatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "5", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "5", 1, 0))),//非常满意数
                     SatisfiedCount = SqlFunc.IIF(TypeId == 1, SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "4", 1, 0)), SqlFunc.AggregateSum(SqlFunc.IIF(SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "4", 1, 0))), //满意数
@@ -1182,7 +1188,7 @@ namespace Hotline.Api.Controllers.Bi
         /// </summary>
         /// <param name="StartDate"></param>
         /// <param name="EndDate"></param>
-        /// <param name="TypeCode">归档类型 0:全部,1:中心,2:部门</param>
+        /// <param name="TypeCode">0:全部,1:中心,2:部门</param>
         /// <returns></returns>
         [HttpGet("department_acceptance_type_statistics")]
         public async Task<List<DepartmentAcceptanceTypeStatisticsDto>> DepartmentAcceptanceTypeStatistics(DateTime StartDate, DateTime EndDate, int TypeCode)
@@ -1197,7 +1203,7 @@ namespace Hotline.Api.Controllers.Bi
 
               .Select(it => new
               {
-                  OrgCode = IsCenter == true ? it.OrgLevelOneCode : it.ActualHandleOrgCode.Substring(0, _sessionContext.RequiredOrgId.Length + 3),
+                  OrgCode = IsCenter == true ? it.OrgLevelOneCode  : it.ActualHandleOrgCode.Substring(0, _sessionContext.RequiredOrgId.Length + 3),
                   it.AcceptTypeCode,
                   it.FileDurationWorkday,
                   it.AllDuration
@@ -1263,12 +1269,9 @@ namespace Hotline.Api.Controllers.Bi
         {
             dto.EndDate = dto.EndDate.AddDays(1).AddSeconds(-1);
             var (total, items) = await _orderRepository.Queryable()
-                .Where(p => p.CreationTime >= dto.StartDate && p.CreationTime <= dto.EndDate && it.Status >= EOrderStatus.Filed)
-                .WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneCode) && dto.OrgLevelOneCode == "001", p => p.OrgLevelOneCode == dto.OrgLevelOneCode)
-                .WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneCode) && dto.OrgLevelOneCode != "001", p => p.ActualHandleOrgCode.StartsWith(dto.OrgLevelOneCode))
+                .Where(p => p.CreationTime >= dto.StartDate && p.CreationTime <= dto.EndDate && (int)p.Status >= 300)
+                .WhereIF(!string.IsNullOrEmpty(dto.OrgLevelOneCode), p => p.OrgLevelOneCode == dto.OrgLevelOneCode)
                 .WhereIF(!string.IsNullOrEmpty(dto.AcceptTypeCode), p => p.AcceptTypeCode == dto.AcceptTypeCode)
-                .WhereIF(dto.TypeCode == 1, p => p.OrgLevelOneCode == "001")
-                .WhereIF(dto.TypeCode == 2, p => p.OrgLevelOneCode != "001")
                 .OrderByDescending(d => d.CreationTime)
                 .ToPagedListAsync(dto, HttpContext.RequestAborted);
 
@@ -1406,7 +1409,7 @@ namespace Hotline.Api.Controllers.Bi
                    .Where((p, o) => p.CallOrderType == ECallOrderType.Order)
                    .Where((p, o) => p.ExternalId != null && o.Id != null)
                     .WhereIF(!string.IsNullOrEmpty(dto.PhoneNum), (p, o) => p.CPN == dto.PhoneNum)
-                   .Select((p, o) => new
+                   .Select((p, o) => new 
                    {
                        p.CPN,
                        p.ExternalId
@@ -1573,59 +1576,59 @@ namespace Hotline.Api.Controllers.Bi
             return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
         }
 
-        /// <summary>
-        /// 回退错件
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <returns></returns>
-        [HttpGet("reTransact")]
-        public async Task<PagedDto<OrderReTransactVo>> OrderReTransact([FromQuery] QueryOrderReTransactRequest dto)
+		/// <summary>
+		/// 回退错件
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpGet("reTransact")]
+		public async Task<PagedDto<OrderReTransactVo>> OrderReTransact([FromQuery] QueryOrderReTransactRequest dto) 
         {
-            if (!dto.StartTime.HasValue || !dto.EndTime.HasValue)
-                throw UserFriendlyException.SameMessage("请选择时间!");
-            dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
-            var (total, items) = await _orderSpecialDetailRepository.Queryable()
-                .Includes(x => x.OrderSpecial)
+			if (!dto.StartTime.HasValue || !dto.EndTime.HasValue)
+				throw UserFriendlyException.SameMessage("请选择时间!");
+			dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
+			var (total, items) = await _orderSpecialDetailRepository.Queryable()
+                .Includes(x=>x.OrderSpecial)
                 .WhereIF(!string.IsNullOrEmpty(dto.OrgName), x => x.OrgName.Contains(dto.OrgName!))
-                .Where(x => x.OrderSpecial.ESpecialType == ESpecialType.ReTransact)
+				.Where(x => x.OrderSpecial.ESpecialType == ESpecialType.ReTransact)
                 .Where(x => x.OrderSpecial.CreationTime >= dto.StartTime)
                 .Where(x => x.OrderSpecial.CreationTime <= dto.EndTime)
                 .GroupBy(x => new { Time = x.OrderSpecial.CreationTime.ToString("yyyy-MM-dd"), x.OrgId, x.OrgName })
                 .Select(x => new OrderReTransactVo
                 {
-                    Time = x.OrderSpecial.CreationTime.ToString("yyyy-MM-dd"),
-                    OrgId = x.OrgId,
+	                Time = x.OrderSpecial.CreationTime.ToString("yyyy-MM-dd"),
+					OrgId = x.OrgId,
                     OrgName = x.OrgName,
                     Num = SqlFunc.AggregateCount(1)
                 }).MergeTable()
-                .OrderByIF(dto.SortRule == 0, x => x.Num, OrderByType.Asc)
+				.OrderByIF(dto.SortRule == 0, x => x.Num, OrderByType.Asc)
                 .OrderByIF(dto.SortRule == 1, x => x.Num, OrderByType.Desc)
                 .ToPagedListAsync(dto, HttpContext.RequestAborted);
             return new PagedDto<OrderReTransactVo>(total, _mapper.Map<IReadOnlyList<OrderReTransactVo>>(items));
-        }
-
-        /// <summary>
-        /// 回退错件明细
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <returns></returns>
-        [HttpGet("reTransact_detail")]
-        public async Task<PagedDto<OrderSpecialDto>> OrderReTransactDetail([FromQuery] QueryOrderReTransactDetailRequest dto)
+		}
+
+		/// <summary>
+		/// 回退错件明细
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[HttpGet("reTransact_detail")]
+		public async Task<PagedDto<OrderSpecialDetailDto>> OrderReTransactDetail([FromQuery] QueryOrderReTransactDetailRequest dto) 
         {
-            if (!dto.StartTime.HasValue || !dto.EndTime.HasValue)
-                throw UserFriendlyException.SameMessage("请选择时间!");
-            dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
-            var (total, items) = await _orderSpecialDetailRepository.Queryable()
-                .Includes(x => x.OrderSpecial, s => s.Order)
-                .WhereIF(!string.IsNullOrEmpty(dto.OrgName), x => x.OrgName.Contains(dto.OrgName!))
-                .WhereIF(!string.IsNullOrEmpty(dto.ErrorName), x => x.ErrorName.Contains(dto.ErrorName!))
-                .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderSpecial!.Order!.No!.Contains(dto.No!))
-                .Where(x => x.OrderSpecial.ESpecialType == ESpecialType.ReTransact)
-                .Where(x => x.OrderSpecial.CreationTime >= dto.StartTime)
-                .Where(x => x.OrderSpecial.CreationTime <= dto.EndTime)
-                .ToPagedListAsync(dto, HttpContext.RequestAborted);
-            return new PagedDto<OrderSpecialDto>(total, _mapper.Map<IReadOnlyList<OrderSpecialDto>>(items));
-        }
+			if (!dto.StartTime.HasValue || !dto.EndTime.HasValue)
+				throw UserFriendlyException.SameMessage("请选择时间!");
+			dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
+			var (total, items) = await _orderSpecialDetailRepository.Queryable()
+				.Includes(x => x.OrderSpecial,s=>s.Order)
+                .WhereIF(!string.IsNullOrEmpty(dto.OrgName),x=>x.OrgName.Contains(dto.OrgName!))
+				.WhereIF(!string.IsNullOrEmpty(dto.ErrorName), x => x.ErrorName.Contains(dto.ErrorName!))
+				.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderSpecial!.Order!.No!.Contains(dto.No!))
+				.Where(x => x.OrderSpecial.ESpecialType == ESpecialType.ReTransact)
+				.Where(x => x.OrderSpecial.CreationTime >= dto.StartTime)
+				.Where(x => x.OrderSpecial.CreationTime <= dto.EndTime)
+				.ToPagedListAsync(dto, HttpContext.RequestAborted);
+			return new PagedDto<OrderSpecialDetailDto>(total, _mapper.Map<IReadOnlyList<OrderSpecialDetailDto>>(items));
+		}
 
         /// <summary>
         /// 获取基本信息
@@ -1633,14 +1636,14 @@ namespace Hotline.Api.Controllers.Bi
         /// <param name="id"></param>
         /// <returns></returns>
 		[HttpGet("reTransact_base")]
-        public async Task<object> ReTransactBaseData()
-        {
-            var rsp = new
-            {
-                ReTransactErrorType = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.ReTransactErrorType),
-            };
-            return rsp;
-        }
-
-    }
+		public async Task<object> ReTransactBaseData()
+		{
+			var rsp = new
+			{
+				ReTransactErrorType = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.ReTransactErrorType),
+			};
+			return rsp;
+		}
+
+	}
 }

+ 2 - 0
src/Hotline.Api/Controllers/OrderController.cs

@@ -1684,6 +1684,8 @@ public class OrderController : BaseController
             CounterSignType = EnumExts.GetDescriptions<ECounterSignType>(),
             AcceptType = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.AcceptType),
             SalesChannel = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.SalesChannel),
+            VisitSatisfaction = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.VisitSatisfaction),
+            DissatisfiedReason = _sysDicDataCacheManager.GetSysDicDataCache(SysDicTypeConsts.DissatisfiedReason),
 		};
         return rsp;
     }

+ 1 - 1
src/Hotline.Api/config/appsettings.Development.json

@@ -60,7 +60,7 @@
     }
   },
   "DatabaseConfiguration": {
-    "ApplyDbMigrations": false,
+    "ApplyDbMigrations": true,
     "ApplySeed": false
   },
   "MqConfiguration": {

+ 2 - 0
src/Hotline.Share/Dtos/Order/OrderSpecialDto.cs

@@ -427,5 +427,7 @@ namespace Hotline.Share.Dtos.Order
 		public string ErrorId { get; set; }
 
 		public string ErrorName { get; set; }
+
+		public OrderSpecialDto OrderSpecial { get; set; }
 	}
 }